[Beispiel] Datumsprüfung

  • Hier ein Beispiel zum Prüfen ob ein Datum (jetzt) zwischen 2 Daten liegt:

    Spoiler anzeigen
    [autoit]


    #include <StaticConstants.au3>
    #include <date.au3>
    #include <DateTimeConstants.au3>
    #include <EditConstants.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include<WindowsConstants.au3>

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

    Autor: autoBert
    veröffentlicht: http://www.autoit.de/index.php?page…57823#post25782
    Opt('GUIOnEventMode', 1)

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

    Global $sTitel = 'Beispiel um Zeiten zu vergleichen'

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

    Local $hMainGui = GUICreate($sTitel, 400, 280, 140, 150, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
    ;erzeugt eine GUI die zurückgebebene ID wird in der Variablen $hMainGui gespeichert
    ;die GUI hat BOXen für Mininmieren, Maximieren und ist in der Größe frei änderbar
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    ;Verknüpft dem Event $Gui_Event_Close mit der Funktion _End

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

    ;Menübar anzeigen
    Global $menu_help = GUICtrlCreateMenu("?", -1, 1)
    Global $item_help_auto = GUICtrlCreateMenuItem("Autor: (Auto)Bert", $menu_help)
    Global $item_help_exit = GUICtrlCreateMenuItem("Beenden", $menu_help)
    GUICtrlSetOnEvent(-1, '_End')

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

    Local $hedtFrom = GUICtrlCreateDate("01/01/2009 18:45:56", 20, 10, 175, 25, $DTS_UPDOWN)
    ;erzeugt ein From Steuerelement die zurückgegebene ID wird in der Variablen $hedtFrom gespeichert
    Local $DTM_SETFORMAT_ = 0x1032
    Local $style = "dd/MM/yyyy HH:mm:ss"
    GUICtrlSendMsg($hedtFrom, $DTM_SETFORMAT_, 0, $style)
    GUICtrlSetFont(-1, 12)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT)
    ;verankert das From Steuerelement Links, rechts, oben und fixiert die Höhe
    ;beim Resizen bleibt es dadurch auf seiner Position und ändert nur die Breite
    Local $hedtTo = GUICtrlCreateDate("01.01.2009", 20, 40, 175, 25, $DTS_UPDOWN)
    ;erzeugt ein To Steuerelement die zurückgegebene ID wird in der Variablen $hedtTo gespeichert
    GUICtrlSendMsg($hedtTo, $DTM_SETFORMAT_, 0, $style)
    GUICtrlSetFont(-1, 12)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT)
    ;verankert das To Steuerelement Links, rechts, oben und fixiert die Höhe
    ;beim Resizen bleibt es dadurch auf seiner Position und ändert nur die Breite

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

    GUICtrlCreateButton('&prüfen', 220, 10, 150, 25)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
    ;verankert den Button "Prüfen" rechts und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
    GUICtrlSetOnEvent(-1, '_CheckDate')
    ;Beim Klicken des Buttons wird die Funktion _CheckTime aufgerufen

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

    Local $hlblErgebnis = GUICtrlCreateLabel("hier steht danach das Ergebnis", 12, 80, 200,200)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert das Label links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand

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

    GUICtrlCreateButton('Be&enden', 220, 115, 150, 25)
    GUICtrlSetOnEvent(-1, '_END')
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)

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

    GUICtrlCreateGraphic(0, 230, 400, 2, $SS_BLACKRECT)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKLEFT + $GUI_DOCKBOTTOM)
    Global $hStatus = GUICtrlCreateLabel("", 5, 235, 400, 25)

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

    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKLEFT + $GUI_DOCKBOTTOM)
    ;verankert das Label Links, rechts und unten; fixiert die Höhe
    ;beim Resizen bleibt es dadurch auf seiner Position und ändert nur die Breite wird angepasst
    GUISetState()

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

    While 1
    Sleep(120)
    WEnd

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

    Func _End()
    GUIDelete($hMainGui)
    Exit
    EndFunc ;==>_End

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

    Func _CheckDate()
    Local $dtNow = _NowCalc()
    ConsoleWrite($dtNow & @CRLF)
    LOCAL $sCheckFrom = GUICTRLREAD($HEDTFrom)
    LOCAL $sCheckTo = GUICTRLREAD($HEDTTo)
    if $sCheckFrom > $sCheckTo Then
    $sCheckFrom = $sCheckTo
    $sCheckTo = GUICTRLREAD($HEDTFrom)
    EndIf
    ConsoleWrite($sCheckFrom & @CRLF)
    ConsoleWrite($sCheckTo & @CRLF)
    LOCAL $dtFrom = _Date2Str($sCheckFrom)
    ConsoleWrite($dtFrom & @crlf)
    LOCAL $dtTo = _Date2Str($sCheckTo)
    ConsoleWrite($dtTo & @crlf)
    $sErg = $dtNow & @CRLF
    Select
    Case $dtNow >= $dtFrom and $dtNow <= $dtTo
    $sErg &= "liegt zwischen den"
    case $dtNow <= $dtFrom or $dtNow >= $dtTo
    $sErg &= "liegt ausserhalb den"
    case $dtNow = $dtFrom and $dtNow = $dtTo
    $sErg &= "entspricht den"
    EndSelect
    $sErg &= " beiden Terminen" & @CRLF & $dtFrom & @CRLF & $dtTo
    GUICtrlSetData($hlblErgebnis,$sErg)
    EndFunc ;==>_CallEaster

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

    Func _Date2Str($DateTime)
    Return StringMid($DateTime,7,4)&"/" & STRINGMID($DateTime,4,2) & "/" & STRINGLEFT($DateTime,2) & " " & StringRight($DateTime,8)
    EndFunc

    [/autoit]

    mfg autoBert

  • Schau es dir noch einmal an (Zeile 9 & 10 als bsp.)
    Kannst du noch ein wenig dazuschreiben, was man damit machen kann?
    Mit "Hier ein Beispiel zum Prüfen ob ein Datum (jetzt) zwischen 2 Daten liegt:" kann ich nicht so viel anfangen.

  • Wäre es nicht eleganter mit

    [autoit]

    _DateDiff()

    [/autoit]

    zu arbeiten?

    Gruß Protaris