Problem mit Datums-Prüfung

  • Hallo liebe "Gemeinde" ;)

    bin zwar noch nicht lange dabei aber hab schon viele Fragen *lol
    Ich hoffe jedoch, dass mir trotzdem geholfen wird :)

    Mein Problem: Ich schaffe es nicht, dass ein Datum, welches mir von der GUI geliefert wird mit einer von mir gesetzten Vorgabe zu vergleichen.
    Was ich möchte ist ein Datum prüfen, so dass es nicht in der Zukunft liegen kann und nicht älter als zwei Jahre zurück liegen kann.
    Evtl. muss ich das über einen bestimmten Variablentyp (Sting, Int) oder so machen. In der Hilfe find ich nix passendes. Bräuchte evtl. lediglich einen passenden Befehl dann kann ich den Rest selber ausprobieren bzw. durchlesen.

    Hier mein Versuch:

    Spoiler anzeigen
    [autoit]


    GUICtrlCreateLabel("Zeitpunkt Ausschussanfall:", 470, 355, 160, 25)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $adate = GUICtrlCreateDate(@YEAR & '/' & (@MON + 1) & '/' & @MDAY, 645, 355, 100, 20, $DTS_SHORTDATEFORMAT)

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

    ; ...

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

    ;~ $adate -> Prüfung des Var-Inhalts
    If GUICtrlRead($adate) < (@MDAY & '.' & @MON & '.' & (@YEAR - 2)) Or GUICtrlRead($adate) > (@MDAY & '.' & @MON & '.' & @YEAR) Then
    MsgBox(16, 'Ausschuss-Datum', 'Ausschussdatum falsch: Datum kann nicht in der Zukunft liegen.' & @CRLF & _
    'Datum muss nach Jahr ' & (@YEAR - 2) & ' liegen. Bitte kontrollieren Sie Ihre Eingaben!')
    ContinueLoop
    EndIf

    [/autoit]

    Schon mal Danke im Voraus!

    Einmal editiert, zuletzt von Towacom (11. Juli 2008 um 09:58)

  • Du kannst mit der <Date.au3> UDF Datum vergleichen.

    [autoit]


    _Date_Time_CompareFileTime($pFileTime1, $pFileTime2)
    ;oder
    _DateDiff($sType, $sStartDate, $sEndDate)

    [/autoit]


    Vieleicht hilft dir das weiter.

    • Offizieller Beitrag

    Hallo,

    um ein richtiges Ergebnis zu erhalten ist es wichtig das Datum im richtigen Format zu vergleichen. Das Datum wird als String zurückgegeben. Wenn man Strings miteinander vergleicht wird der zeichenweise verglichen und das erste Zeichen das unterschiedlich ist entscheidet ob größer oder kleiner.

    Beispiel:

    "10.06.2008" verlichen mit "10.07.2007"

    Das erste Zeichen was unterschiedlich ist ist die "6" und die "7" im Monat, da die 6 kleiner ist als die 7 ist der String 1 kleiner, obwohl String 2 die Jahreszahl 2007 hat.

    Wenn man den String jetzt anders formatiert und zwar im Format jjjj/mm/tt werden die 2 String richtig miteinander verglichen.

    Obiges Beispiel neu formatiert:

    "2008/06/10" verglichen mit "2007/07/10"

    Das erste Zeichen das unterschiedlich ist ist die "8" und die "7" im Jahr, die 8 ist größer als die 7 als ist String 1 größer.

  • Dankeschön ihr zwei! Das hilft mir schon weiter.
    Ich wusste nicht sicher wie die Datumwerte verglichen werden.
    Die UDF ist auch gut - werd ich umsetzen.

    Thx

  • Problem gelöst - wenn alles sauber läuft poste ich das "wie" - evtl. hilfts jemand auch mal noch.

    Bis dahin Danke und =closed= :)