Milisekunden in Uhrzeit umwandeln

  • Ich habe eine Funktion gebraucht, die Millisekunden in ein lesbareres Format umwandelt, herrausgekommen ist diese Funktion.
    Vielleicht kann sie ja jemand gebrauchen

    Spoiler anzeigen
    [autoit]

    ; #FUNCTION#
    ;===============================================================================
    ;
    ; Name...........: _MStoTimeformat
    ; Description ...: Wandelt Millisekunden in das Format HH:MM:SS um
    ; Syntax.........: _MStoTimeformat($MStTf_MS)
    ; Parameters ....: $MStTf_MS - Zeit in Millisekunden (z.B vom TimerDiff() zurückgegeben
    ; Return values .: Success - Gibt die Millisekunden im Format HH:MM:SS zurück
    ; Failure - Returns 0 and Sets @Error:
    ; |1 - $MStTf_MS ist keine Zahl
    ; Author ........: TheLuBu ([email='LuBu@veytal.com'][/email])
    ; Modified.......:
    ; Remarks .......:
    ; Related .......:
    ; Link ..........;
    ;
    ;==========================================================================================
    Func _MStoTimeformat($MStTf_MS)
    If not IsNumber($MStTf_MS) Then Return SetError(1,0,0)
    Local $MStTf_vorzeichen = "", $MStTf_Endzeit, $MStTf_Stunden, $MStTf_Minuten, $MStTf_Sekunden, $MStTf_sret
    If $MStTf_MS < 0 Then
    $MStTf_MS = Abs($MStTf_MS)
    $MStTf_vorzeichen = "-"
    EndIf
    $MStTf_Endzeit = $MStTf_MS / 1000
    $MStTf_Stunden = $MStTf_Endzeit / 3600
    $MStTf_Stunden = Int($MStTf_Stunden)
    $MStTf_Minuten = (($MStTf_Endzeit / 60) - ($MStTf_Stunden * 60))
    $MStTf_Minuten = Int($MStTf_Minuten)
    $MStTf_Sekunden = ($MStTf_Endzeit - ($MStTf_Minuten * 60) - ($MStTf_Stunden * 3600))
    $MStTf_Sekunden = Int($MStTf_Sekunden)
    If $MStTf_Stunden < 10 Then $MStTf_Stunden = "0" & $MStTf_Stunden
    If $MStTf_Minuten < 10 Then $MStTf_Minuten = "0" & $MStTf_Minuten
    If $MStTf_Sekunden < 10 Then $MStTf_Sekunden = "0" & $MStTf_Sekunden
    $MStTf_sret = $MStTf_vorzeichen & $MStTf_Stunden & ":" & $MStTf_Minuten & ":" & $MStTf_Sekunden
    Return $MStTf_sret
    EndFunc ;==>MStoTimeformat

    [/autoit]
  • Ticks != Millisekunden.
    Tick = Takt eines Prozessors

    Was willst du uns damit sagen?

    Das Beispiel der Hilfe von _TicksToTime() verwendet TimerDiff() um die Funktionsweise zu demonstrieren und wenn ich mal TheLuBu zitieren darf:

    Zitat

    ; Parameters ....: $MStTf_MS - Zeit in Millisekunden (z.B vom TimerDiff() zurückgegeben)

    UNPLEASANT SPOILER

    You just lost the game!

  • Entschuldige - du hast Recht.
    Die Bezeichnung war für mich missverständlich da im Normalfall durchaus die Anzahl der vergangenen Prozessortakte verwendet werden um die Zeiten in Rechnern zu messen.
    Diese müssen noch in ein uns vertrautes Zahlenformat gewandelt werden.
    Diese Aufgabe erfüllt dann eine entsprechende Ticks2Time Funktion (wird über die Taktrate berechnet).
    Der Autor der Funktion _TicksToTime() wandelt aber gar keine Ticks sondern, wie ich durch dich nun weiß, Millisekunden.

    Da hätte ich vorher nachschauen sollen - sorry

  • Entschuldige - du hast Recht.
    Die Bezeichnung war für mich missverständlich da im Normalfall durchaus die Anzahl der vergangenen Prozessortakte verwendet werden um die Zeiten in Rechnern zu messen.
    Diese müssen noch in ein uns vertrautes Zahlenformat gewandelt werden.
    Diese Aufgabe erfüllt dann eine entsprechende Ticks2Time Funktion (wird über die Taktrate berechnet).
    Der Autor der Funktion _TicksToTime() wandelt aber gar keine Ticks sondern, wie ich durch dich nun weiß, Millisekunden.

    Da hätte ich vorher nachschauen sollen - sorry

    Kein Problem, musste selber nochmal nachschauen. ;)
    Hatte aber _TicksToTime() selber schon verwendet, um TimerDiff() in "normales" Zeitformat umzuwandeln.

    Gruß

    Edit: Nichts desto trotz gefällt mir die Funktion von TheLuBu, da diese das Zeitformat direkt in hh:mm:ss zurückgibt und nicht erst durch Stringformat() in dieses Format gebracht werden muß

    UNPLEASANT SPOILER

    You just lost the game!

  • Moin,
    So eine Funktion habe ich irgendwann auch schonmal gebastelt.
    Der Ausgabestring sollte identisch sein.

    Spoiler anzeigen
    [autoit]

    Func _Zeit($iMs)
    $iMs = Int($iMs)
    Local $iSec, $iMin, $iStd, $sVor
    If $iMs < 0 Then
    $iMs = Abs($iMs)
    $sVor = '-'
    EndIf
    $iSec = $iMs / 1000
    $iMin = $iSec / 60
    $iStd = $iMin / 60
    $iMin -= Int($iStd) * 60
    $iSec -= Int($iMin) * 60
    Return $sVor & StringRight('0' & Int($iStd), 2) & ':' & StringRight('0' & Int($iMin), 2) & ':' & StringRight('0' & Int($iSec), 2)
    EndFunc

    [/autoit]


    lg
    M

  • Desshalb habe ich die FUnktion nicht gefunden.
    Ich bin auch von Ticks = Prozessortakt ausgegangen.
    Naja gut, wieder eine Zeitfunktion mehr für mein "portfolio" ;D