Dati miteinander vergleichen

  • Hatte grad das Problem, zwei Dati miteinander zu vergleichen, hab mir jetzt mal auf die schnelle folgendes ausgedacht:

    Oder geht das anders einfacher?

    Gruß

    Zippel

    Einmal editiert, zuletzt von Zippelmitz (22. Februar 2008 um 16:03)

    • Offizieller Beitrag

    Wozu gibt es _Date-Funktionen?
    _DateDiff macht den Vergleich, davor muss man es halt entsprechend in das richtige Format bringen. Aber dann muss man sich über die ganzen Sonderfälle keine Sorgen mehr machen.
    In deinem Fall könnte dein Ansatz aber reichen... :)

    peethebee

  • "Jetzt, wo ich weiß wie es geht, versteh ich auch die HIlfe" :thumbup:
    genau danach hab ich gesucht, aber erst ma wissen wonach suchen ;)

    Datums-Format ist btw. DD.MM.YYYY und somit hat sich der Thread auch in Luft aufgelöst ;)

    Gruß und Danke,

    Zippel

    • Offizieller Beitrag

    Ach schade, ich hatte gerade noch eine Lösung, die Deiner ursprünglichen Idee sehr nahe kommt. Poste sie trotzdem mal:

    [autoit]


    msgbox(0, '', _DatumKleinerAls('22.02.2008', '23.02.2008'))

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

    ; _DatumKleinerAls() gibt "1" zurück, wenn Datum 1 kleiner als Datum 2, anderenfalls "0". Bei Fehler: "-1"
    Func _DatumKleinerAls($date1, $date2)
    Local $aD1 = StringSplit($date1, '.'), $aD2 = StringSplit($date2, '.')
    If $aD1[0] > 2 And $aD2[0] > 2 Then
    If $aD1[3] < $aD2[3] Then Return 1
    If $aD1[3] > $aD2[3] Then Return 0
    If $aD1[2] < $aD2[2] Then Return 1
    If $aD1[2] > $aD2[2] Then Return 0
    If $aD1[1] <= $aD2[1] Then Return 1
    Return 0
    EndIf
    Return -1
    EndFunc

    [/autoit]

    oder mit Select:

    [autoit]


    msgbox(0, '', _DatumKleinerAls('22.02.2008', '22.02.2008'))

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

    ; _DatumKleinerAls() gibt "1" zurück, wenn Datum 1 kleiner als Datum 2, anderenfalls "0". Bei Fehler: "-1"
    Func _DatumKleinerAls($date1, $date2)
    Local $aD1 = StringSplit($date1, '.'), $aD2 = StringSplit($date2, '.')
    If $aD1[0] > 2 And $aD2[0] > 2 Then
    Select
    Case $aD1[3] < $aD2[3]
    Return 1
    Case $aD1[3] > $aD2[3]
    Return 0
    Case $aD1[2] < $aD2[2]
    Return 1
    Case $aD1[2] > $aD2[2]
    Return 0
    Case $aD1[1] <= $aD2[1]
    Return 1
    Case $aD1[1] > $aD2[1]
    Return 0
    EndSelect
    EndIf
    Return -1
    EndFunc

    [/autoit]