Datum countdown

  • Tja ich hab jetzt ewig versucht einen Countdown zu erstellen.
    Und zwar soll er die Jahre Monate wochen Tage Stunden Minuten Sekunden berechnen die ich noch warten muss, bis ein bestimmtes Datum eintritt.
    bsp: 3 August 2017
    Ich hätte jetzt ganz gern das in einer msgbox:
    Es sind noch 8 Jahre 0 Monate 0Wochen 0 Tage 0Stunden wasweisichwievielesekunden bis zum 3.8.2017 00:00
    is gar nicht so eifnach wie es zunächst aussieht eventuell habt ihr ja rat.
    #Include <Date.au3> hab ich mir natürlich angesehen, komm jedoch trotzdem nie auf ein richtiges ergebnis.

    • Offizieller Beitrag

    Mal auf die Schnelle ein Beispiel:

    Spoiler anzeigen
    [autoit]


    #include <StaticConstants.au3>
    #include <Date.au3>

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

    Global $DestinationDate = '2017/08/03 12:00:00'
    Global $ahDate[6], $ahNames[6]
    Global $aNames[6] = ['Jahr', 'Monat', 'Tag', 'Stunde', 'Minute', 'Sekunde']

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

    GUICreate('Countdown', 380, 100)
    For $i = 0 To 5
    $ahNames[$i] = GUICtrlCreateLabel($aNames[$i], 10 + $i * 60, 20, 55, 20, $SS_CENTER)
    $ahDate[$i] = GUICtrlCreateLabel('', 10 + $i * 60, 40, 55, 30, $SS_CENTER)
    GUICtrlSetFont(-1, 16, 600)
    Next
    _Update()
    GUISetState()
    AdlibEnable('_Update', 1000)
    Do
    Until GUIGetMsg() = -3

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

    Func _Update()
    Local $aDate = _DateToDateDiffArray($DestinationDate)
    For $i = 0 To 5
    If $i < 3 Then
    If $aDate[$i] <> 1 Then
    GUICtrlSetData($ahNames[$i], $aNames[$i] & 'e')
    Else
    GUICtrlSetData($ahNames[$i], $aNames[$i])
    EndIf
    Else
    If $aDate[$i] <> 1 Then
    GUICtrlSetData($ahNames[$i], $aNames[$i] & 'n')
    Else
    GUICtrlSetData($ahNames[$i], $aNames[$i])
    EndIf
    EndIf
    GUICtrlSetData($ahDate[$i], $aDate[$i])
    Next
    EndFunc

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

    Func _DateToDateDiffArray($sDate)
    Local $aTime[6], $aDiff[6] = ['Y', 'M', 'D', 'h', 'n', 's']
    For $i = 0 To 5
    $aTime[$i] = _DateDiff($aDiff[$i], _NowCalc(), $sDate)
    $sDate = _DateAdd($aDiff[$i], -$aTime[$i], $sDate)
    Next
    Return $aTime
    EndFunc

    [/autoit]