- Offizieller Beitrag
Das vorhandene _TicksToTime war mir immer zu "unhandlich". Man musste drei Variablen übergeben und konnte das Ergebnis nicht gleich in anderen Funktionen weiterverwenden.
Deshalb habe ich diese Funktion geschrieben, die einen String zurückgibt, dessen Format man festlegen kann.
Lange Rede....hier ist die Funktion:
Spoiler anzeigen
MsgBox(0, 'Beispiel 1', _TicksToTimeFormat(3345757822, '%ww Wochen, %dd Tage, %hh Stunden, %mm Minuten, %ss Sekunden und %ms Millisekunden'))
MsgBox(0, 'Beispiel 2', 'Ausgabe als "%hh:%mm:%ss":' & @CR & @CR & _TicksToTimeFormat(21227884, '%hh:%mm:%ss'))
MsgBox(0, 'Beispiel 3', 'Ausgabe als "%mm %ss":' & @CR & @CR & _TicksToTimeFormat(67843, '%mm %ss'))
MsgBox(0, 'Beispiel 4', 'Ausgabe als "%mm:%ss.%ms":' & @CR & @CR & _TicksToTimeFormat(597543, '%mm:%ss.%ms'))
MsgBox(0, 'Beispiel 5', 'Ausgabe als "%mm:%ss.%ms":' & @CR & @CR & _TicksToTimeFormat(2, '%mm:%ss.%ms'))
;===============================================================================
; Function Name: _TicksToTimeFormat($iTicks, $sFormat = '%hh:%mm:%ss')
; Description:: Diese Funktion wandelt Millisekunden in ein anzugebenes Zeitformat um
; Parameter(s): $iTicks = Zeit in Millisekunden
; $sFormat:
; %ww für Wochen
; %dd für Tage
; %hh für Stunden
; %mm für Minuten
; %ss für Sekunden
; %ms für Millisekunden
; sonstige Zeichen, die dazwischen stehen, werden übernommen
; Requirement(s): -
; Return Value(s): Zeit im ausgewählten Format (String)
; Author(s): Oscar (http://www.autoit.de)
;===============================================================================
Func _TicksToTimeFormat($iTicks, $sFormat = '%hh:%mm:%ss')
Local $aTime[6], $sOut, $aTimeFormat[6] = ['ww', 'dd', 'hh', 'mm', 'ss', 'ms'], $aFormat
$aTime[4] = Int($iTicks / 1000)
$aTime[5] = $iTicks - $aTime[4] * 1000
$aTime[0] = Int($aTime[4] / 604800)
$aTime[4] = Mod($aTime[4], 604800)
$aTime[1] = Int($aTime[4] / 86400)
$aTime[4] = Mod($aTime[4], 86400)
$aTime[2] = Int($aTime[4] / 3600)
$aTime[4] = Mod($aTime[4], 3600)
$aTime[3] = Int($aTime[4] / 60)
$aTime[4] = Mod($aTime[4], 60)
$aFormat = StringRegExp($sFormat, '%([^%]+)', 3)
If Not IsArray($aFormat) Then Return SetError(1, 0, $iTicks)
For $i = 0 To UBound($aFormat) - 1
For $j = 0 To UBound($aTimeFormat) - 1
If StringLeft($aFormat[$i], 2) = $aTimeFormat[$j] Then $sOut &= StringFormat('%0' & 2 + ($j = 5) & 'i', $aTime[$j]) & StringMid($aFormat[$i], 3)
Next
Next
Return $sOut
EndFunc ;==>_TicksToTimeFormat
Edit: $aFormat nicht lokal deklariert. Behoben!
Edit2: Millisekunden wurden nicht dreistellig angezeigt. Behoben!
Edit3: Tage und Wochen hinzugefügt (siehe Beispiele)
Nichts weltbewegendes, aber ich finde die Funktion ganz praktisch.
Vielleicht kann sie ja noch jemand gebrauchen...