UDF: Timestamp2array

  • Diese UDF wandelt einen Timestamp in ein Array mit Stunden, Minuten, Sekunden und Millisekunden um.
    Rückgabewert: $aCalculatedTime
    $aCalculatedTime[0] gibt die Größenordnung der Zeit an, siehe Script
    $aCalculatedTime[1] sind Millisekunden
    $aCalculatedTime[2] sind Sekunden
    $aCalculatedTime[3] sind Minuten
    $aCalculatedTime[4] sind Stunden
    edit:$aCalculatedTime[5] sind Tage

    Spoiler anzeigen
    [autoit]

    func _TimeStamp2Array($iTimestamp) ;By L3viathan2142 ;[email='vkoleviathan@googlemail.com'][/email]
    ;You may NEVER delete this comment
    Local $aCalulatedTime[6]
    if $iTimestamp = 0 Then;Timestamp war 0
    $aCalulatedTime[0]=0
    return $aCalulatedTime
    EndIf
    ;[1]=ms
    $aCalulatedTime[1]=Mod($iTimestamp,1000)
    $iTimestamp=($iTimestamp-Mod($iTimestamp,1000))/1000;get rid of ms, now in s
    if $iTimestamp = 0 Then;Timestamp war unter 1 sec
    $aCalulatedTime[0]=1
    return $aCalulatedTime
    EndIf
    ;[2]=s
    $aCalulatedTime[2]=Mod($iTimestamp,60)
    $iTimestamp=($iTimestamp-Mod($iTimestamp,60))/60;get rid of sec, now in min
    if $iTimestamp = 0 Then;Timestamp war unter 1 min
    $aCalulatedTime[0]=2
    return $aCalulatedTime
    EndIf
    ;[3]=min
    $aCalulatedTime[3]=Mod($iTimestamp,60)
    $iTimestamp=($iTimestamp-Mod($iTimestamp,60))/60;get rid of min, now in hour
    if $iTimestamp = 0 Then;Timestamp war unter 1 hour
    $aCalulatedTime[0]=3
    return $aCalulatedTime
    EndIf
    ;[4]=day
    $aCalulatedTime[4]=Mod($iTimestamp,24)
    $iTimestamp=($iTimestamp-Mod($iTimestamp,24))/24;get rid of hour, now in day
    if $iTimestamp = 0 Then;Timestamp war unter 1 day
    $aCalulatedTime[0]=4
    return $aCalulatedTime
    EndIf
    $aCalulatedTime[5]=$iTimestamp
    $aCalulatedTime[0]=5;Timestamp 1 day od mehr
    return $aCalulatedTime
    EndFunc

    [/autoit]


    Erbitte Feedback!

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

    Einmal editiert, zuletzt von L3viathan2142 (26. Dezember 2008 um 01:46)

    • Offizieller Beitrag

    Ich hätte da noch eine weitere Variante:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $iTicks = 9644330003

    [/autoit] [autoit][/autoit] [autoit]

    $array = _TicksToDateTimeArray($iTicks)
    _ArrayDisplay($array, 'unformatierte Ausgabe')

    [/autoit] [autoit][/autoit] [autoit]

    $array = _TicksToDateTimeArray($iTicks, True)
    _ArrayDisplay($array, 'formatierte Ausgabe')

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function Name..: _TicksToDateTimeArray($iValue[, $bFormat])
    ; Description....: Umwandlung von Millisekunden in ein Array mit Zeitangaben
    ; Parameter(s)...: $iValue = Wert in Millisekunden
    ; $bFormat True = Ausgabe formatiert (führende Nullen)
    ; False = Ausgabe unformatiert (Standard)
    ; Return Value...: Array (Wochen, Tage, Stunden, Minuten, Sekunden, Millisekunden)
    ; Author.........: Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _TicksToDateTimeArray($iTicks, $bFormat = False)
    Local $aOut[6], $aDiv[6] = [604800000, 86400000, 3600000, 60000, 1000, 1]
    For $i = 0 To 5
    $aOut[$i] = Int($iTicks / $aDiv[$i])
    $iTicks = Mod($iTicks, $aDiv[$i])
    If $bFormat Then $aOut[$i] = StringFormat('%0' & 2 + ($i = 5) & 'i', $aOut[$i])
    Next
    Return $aOut
    EndFunc ;==>_TicksToDateTimeArray

    [/autoit]