Differenz zweier Uhrzeiten

  • Hallo,

    ich lese aus meiner INI diese daten aus:

    [kommen]
    19.05.2011=01:00:07

    [gehen]
    19.05.2011=14:00:07


    Nun müsste ich hier die differenz berechnen.
    Habe schon gesucht im Forum aber nichts gefunden was auf dieses hier verweist.

    Ev hat jemand ne idee für mich.

    Einmal editiert, zuletzt von JaySini (19. Mai 2011 um 16:56)

  • Sieh dir doch mal die _Date Funktionen in der Hilfe an.

    Hier n Beispiel:

    [autoit]

    #include <Date.au3>

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

    $sDate1 = "2011/05/19 01:00:07"
    $sDate2 = "2011/05/19 14:00:07"
    $iDateCalc = _DateDiff('s',$sDate1,$sDate2)
    MsgBox(0,"", $iDateCalc)

    [/autoit]
  • Okay soweit klar.
    Blos wenn ich es aus der Ini lese

    mit IniReadSection(@ScriptDir & "\daten.ini", "kommen")
    bekomme ich die daten mit einem " . " getrennt nicht mit "/".

    Mein problem ist ja, das ich mit den Uhrzeiten die ich vorgebe rechnen muss, bzw die wo gespeichert sind.

    im moment lese ich es so aus:

    Spoiler anzeigen
    [autoit]

    Func statistik2()

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

    GUISetState(@SW_SHOW, $stat1)
    $ivar9 = IniReadSection(@ScriptDir & "\daten.ini", "kommen")

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

    for $ia9 = 1 to $ivar9 [0] [0]
    _GUICtrlListView_AddItem($list1, $ivar9[$ia9] [0])
    _GUICtrlListView_AddSubItem($list1, $lineIndex1 ,$ivar9[$ia9] [1],1)
    $ivar8 = IniReadSection(@ScriptDir & "\daten.ini", "gehen")
    for $ia8 = 1 to $ivar8 [0] [0]
    _GUICtrlListView_AddSubItem($list1, $lineIndex1 ,$ivar8[$ia8] [1],2)
    $lineIndex1 += 1
    next
    next

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

    endfunc

    [/autoit]

    nun müsste aber noch ein Subitem rein, welches in Spalte 3 im Listview die Differenz angibt.

  • Hallo,
    danke für die antwort.
    Jedoch liest doch doch nur die aktuelle Urhzeit aus.
    Ich gebe die Uhrzeit per hand ein, das Datum zieht er mit _NowDate()

    und die daten gebe ich so ein:

    [autoit]

    $kommen = GUICtrlCreateDate("", 10, 270, 65, 24, $DTS_TIMEFORMAT)
    $gehen = GUICtrlCreateDate("", 80, 270, 65, 24, $DTS_TIMEFORMAT)

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

    $kommen1 = GuiCtrlRead($kommen)
    IniWrite("daten.ini", "kommen", _NowDate(), $kommen1)
    $gehen1 = GuiCtrlRead($gehen)
    IniWrite("daten.ini", "gehen", _NowDate(), $gehen1)

    [/autoit]
  • Du musst die ausgelesenen Angaben eben ins _Datediff konforme Format bringen.
    z.B. über Stringregexpreplace

    [autoit]


    dim $date="19.05.2011"
    dim $date_format=StringRegExpReplace($date, "(\d{2}).(\d{2}).(\d{4})", "$3\/$2\/$1")

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

    MsgBox(0,"YYYY/MM/DD", $date_format)

    [/autoit]
  • Danke werde umgehend mal damit rumbasteln :)

    Wenn ich es nun so mache:

    [autoit]

    dim $date1=GuiCtrlRead($kommen)
    dim $date_format=StringRegExpReplace($date1, "(\d{2}).(\d{2}).(\d{4})", "$3\/$2\/$1")
    MsgBox(0,"YYYY/MM/DD", $date_format)

    [/autoit]

    kommen jedoch die anzeige weiterhin mit " : " statt " / "

  • Wahr ein denkfehler von mir.
    Die Uhrzeit gibt er ja richtig an, ich muss das datum wandeln
    sry ab und zu sieht man den Wald vor lauter bäumen nimmer