Zeit Differenz berechnen

  • Hi Leute,

    da ich im Forum noch nichts brauchbares gefunden und ich die Richtige Funktion noch nicht gefunden habe Frage ich einfach mal hier:

    Wie schaffe ich, dass die Differenz von 2 verschiedenen Zeitpunkten berechnet wird? Die Ausgabe sollte dann in Stunden, Minuten bzw Sekunden erfoögen, je nach dem wie groß der unterschied ist. Also zB. 22:24:15 und 19:34:04 oder auch wenn die 1. Zeit am nächsten Tag ist, kann man da mit _Datediff arbeiten oder gibts günstigere Methoden?

    Einmal editiert, zuletzt von -Tom_Tom- (10. April 2009 um 00:50)

  • Hallo Tom Tom,

    so wie ich Deine frage lese,
    hast Du Dir die schon selbst beantwortet. ;)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Tja, da hab ich nur noch das Problem wie ich die Differenz wieder in ne anständige Zeit (HH:MM:SS) zurück wandeln kann.

    • Offizieller Beitrag

    Das geht so:

    [autoit]

    #include <date.au3>
    $t1 = "2009/01/01 13:15:00"
    $t2 = _NowCalc()

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

    $diff = _DateDiff('s', $t1, $t2)
    Select
    Case $diff < 60
    $sDiff = StringFormat('%02u', $diff) & ' s'
    Case $diff < 60*60
    $sDiff = StringFormat('%02u', Floor($diff/60)) & ':' & _
    StringFormat('%02u', Mod($diff,60)) & ' min'
    Case $diff < 60*60*24
    $sDiff = StringFormat('%02u', Floor($diff/3600)) & ':' & _
    StringFormat('%02u', Floor(Mod($diff,3600)/60)) & ':' & _
    StringFormat('%02u', Mod(Mod($diff,3600),60)) & ' h'
    Case Else
    $sDiff = Floor($diff/86400) & ' d / ' & _
    StringFormat('%02u', Floor(Mod($diff,86400)/3600)) & ':' & _
    StringFormat('%02u', Floor(Mod(Mod($diff,86400),3600)/60)) & ':' & _
    StringFormat('%02u', Mod(Mod(Mod($diff,86400),3600),60)) & ' h'
    EndSelect

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

    MsgBox(0, 'Vergangene Zeit', $sDiff)

    [/autoit]
  • ich hab jetzt nur eine banale Funktion zu bieten. :D
    Kannst Dir ja raussuchen, was Dir besser taugt...

    Spoiler anzeigen
    [autoit]

    $n_sec = 13625647
    MsgBox(0, '', _SecondsToTime($n_sec))

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

    Func _SecondsToTime($n_sec)
    Local $d,$h,$m
    $d = Floor($n_sec/86400)
    $n_sec -= ($d*86400)
    $h = Floor($n_sec/3600)
    If $h < 10 Then $h = "0"&$h
    $n_sec -= ($h*3600)
    $m = Floor($n_sec/60)
    If $m < 10 Then $m = "0"&$m
    $n_sec -= ($m*60)
    If $n_sec < 10 Then $n_sec = "0"&$n_sec
    Return($d&" Tage "&$h&":"&$m&":"&$n_sec)
    EndFunc

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Ich werd mich einfach mal n bissl damit spielen, danke Leute für die guten Lösungen =)