In 1 Tag und 5 Stunden ist es ... Uhr

  • Huhu,

    schonmal danke für Eure Hilfe im IRC doch leider komm ich jetzt nicht weiter.

    Ziel:
    Also ich möchte ein Programm das mir anzeigt wieviel Uhr es ist wenn ich ihm die Tage, Stunden, Minuten und Sekunden vorgebe.

    Beispiel:
    Aktuelle Zeit (20:30 Uhr) + 2 Tage + 12h + 34 Min + 43 Sek = ???

    Problem:
    Ich hab auch schon eine GUI vorgefertigt doch nun komme ich nicht weiter, da er mir die Stunden, Tage etc. nicht richtig umrechnet.

    Schaut es Euch doch bitte mal an:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\schteff\desktop\koda_1.7.0.1\forms\projekt uhr.kxf
    Opt("GUIOnEventMode", 1)

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

    $Form1_1 = GUICreate("Uhrzeit", 445, 183, 193, 125)

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

    $uhrzeit = GUICtrlCreateInput(@HOUR & ":" & @MIN & ":" & @SEC & " Uhr.", 24, 24, 153, 21)

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

    $Es = GUICtrlCreateGroup("Es ist jetzt...", 16, 8, 177, 49)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $tage = GUICtrlCreateInput("", 304, 40, 57, 21)
    $stunden = GUICtrlCreateInput("", 304, 72, 57, 21)
    $minuten = GUICtrlCreateInput("", 304, 104, 57, 21)
    $sekunden = GUICtrlCreateInput("", 304, 136, 57, 21)

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

    $Stunde = GUICtrlCreateLabel("Std", 256, 72, 39, 17)
    $Label3 = GUICtrlCreateLabel("Sek", 256, 136, 39, 17)
    $Label4 = GUICtrlCreateLabel("Min", 256, 104, 38, 17)
    $Tag = GUICtrlCreateLabel("Tage", 256, 40, 25, 17)
    $label = GUICtrlCreateGroup("In...", 232, 8, 161, 161)

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

    Opt("GUIOnEventMode", 1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Tada = GUICtrlCreateButton("Tada!", 64, 88, 73, 49, 0)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSE")
    GUISetState(@SW_SHOW)

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

    GUICtrlSetOnEvent($Tada, "Ergebnis")

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

    Func Ergebnis()

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

    MsgBox(0, "Tada", GUICtrlRead($stunden) * 60 * 60+($minuten) * 60)

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

    EndFunc

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

    Func CLOSE()
    Exit
    EndFunc

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

    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]

    Vielen Dank Gruß
    Steff

    • Offizieller Beitrag

    Ich habe grade eine erweiterte TimerDiff-Funktion erstellt. Die findest du gleich im Board Entwickler.
    Da kannst du die Methoden der Umrechnung sehen.

    Edit:
    Du kannst auch mit _DateAdd() arbeiten.
    Hier mal als Bsp. mit deinen Werten:

    [autoit]

    #include <Date.au3>
    $day = 2
    $hour = 12
    $min = 34
    $sec = 43
    $now = _NowCalc() ; das aktuelle Datum/Uhrzeit

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

    $dest = _DateAdd('d', $day, $now)
    $dest = _DateAdd('h', $hour, $dest)
    $dest = _DateAdd('n', $min, $dest)
    $dest = _DateAdd('s', $sec, $dest)
    MsgBox(0, $now, $dest)

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

    ; oder in einer Zeile:

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

    MsgBox(0, $now, _DateAdd('s', $sec, _DateAdd('n', $min, _DateAdd('h', $hour, _DateAdd('d', $day, $now)))))

    [/autoit]
  • Danke BugFix, leider bin ich Anfänger :whistling: könntest du mir helfen das umzusetzten ich hab mir das gerade angeschaut aber :wacko:
    Nix verstehen in Athen

    Vieeelen Dank

    Gruß

    • Offizieller Beitrag

    Du kannst es auch mit einer Funktion lösen:

    Spoiler anzeigen
    [autoit]

    ; oder mit einer Funktion:
    MsgBox( 0, '', _TargetDateTime(-1, 2, 12, 34, 43) )

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

    Func _TargetDateTime($Source=-1, $Day=0, $Hour=0, $Min=0, $Sec=0)
    If $Source = -1 Then
    $Source = _NowCalc()
    Else
    If Not StringRegExp($Source, '(\d{4}\/\d{2}\/\d{2} \d{2}\:\d{2}\:\d{2})') Then Return SetError(1,0,-1)
    EndIf
    Return _DateAdd('s', $Sec, _DateAdd('n', $Min, _DateAdd('h', $Hour, _DateAdd('d', $Day, $Source))))
    EndFunc

    [/autoit]

    Aber was willst du denn genau tun? Hier hast du doch nun schon die Lösungswege zum Datumsrechnen bekommen. Du kannst dir die Funktionsweise auch nochmal in der Hilfe nachlesen.