Mit Zeit rechnen im Format hh:mm:ss,sec

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

festigrat
Posts: 37
Joined: 02 Mar 2017, 06:58

Mit Zeit rechnen im Format hh:mm:ss,sec

19 Apr 2018, 08:43

Hallo Leute,

ich kriege einfach folgende einfache Aufgabe leider nicht hin und würde mich sehr über Hilfe freuen. Ich will Zeit subtrahieren und zwar im Format hh:mm:ss,msec (Das Komma steht absichtlich vor msec)

Ich würde dann beispielsweise in einerInputBox 12:34:56,789 eingeben und diese soll dann von 23:45:67,890 abgezogen werden.

Hat jemand eine Idee?

Liebe Grüße.
just me
Posts: 5516
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Mit Zeit rechnen im Format hh:mm:ss,sec

19 Apr 2018, 11:18

Moin,

es wäre nett, wenn Du Rückmeldungen zu Deinen offenen Beiträgen gibst, wenn Du sowieso dabei bist, einen neuen Beitrag einzustellen. Die Supporter wissen dann, ob es sich noch lohnt, sich weiter Gedanken zu machen.

Außerdem bist Du im falschen Forum gelandet.
festigrat
Posts: 37
Joined: 02 Mar 2017, 06:58

Re: Mit Zeit rechnen im Format hh:mm:ss,sec

19 Apr 2018, 11:23

Moin, habe ich gerade zeitgleich mit Deiner Bitte gemacht. Ich musste mich erst einmal damit auseinandersetzen und die Lösungsansätze ausprobieren. In welchem Forum wäre ich denn richtig?
just me
Posts: 5516
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Mit Zeit rechnen im Format hh:mm:ss,sec

19 Apr 2018, 11:43

Weil das eine eindeutige Bitte um Unterstützung ist, das Hilfeforum.
festigrat
Posts: 37
Joined: 02 Mar 2017, 06:58

Re: Mit Zeit rechnen im Format hh:mm:ss,sec

19 Apr 2018, 11:53

Sorry, das war nicht meine Absicht. Leider kann ich meine Frage hier nicht löschen. Soll ich die Frage nochmal im richtigen Forum stellen?
Last edited by jNizM on 20 Apr 2018, 05:12, edited 2 times in total.
Reason: Hab's verschoben.
User avatar
Ragnar
Posts: 200
Joined: 30 Sep 2013, 15:25

Re: Mit Zeit rechnen im Format hh:mm:ss,sec

20 Apr 2018, 04:17

Hat länger gedauert als erwartet :facepalm:, aber hier:

Code: Select all

Minuend := ConvertToMilliseconds("23:45:67,890")
Subtrahend := ConvertToMilliseconds("12:34:56,889")
Differenz := Minuend - Subtrahend
MsgBox % ConvertToHHMMSSMS(Differenz)

ConvertToMilliseconds(HHMMSSMS)
{
    HH := SubStr(HHMMSSMS, 1, 2) * 1000 * 3600
    MM := SubStr(HHMMSSMS, 4, 2) * 1000 * 60
    SS := SubStr(HHMMSSMS, 7, 2) * 1000
    MS := SubStr(HHMMSSMS, 10)
    return HH + MM + SS + MS
}

ConvertToHHMMSSMS(Milliseconds)
{
    HH := Milliseconds // 3600000
    remain := Mod(Milliseconds, 3600000)
    MM := remain // 60000
    remain := Mod(remain, 60000)
    SS := remain // 1000
    remain := Mod(remain, 1000)
    MS := Mod(remain, 1000)
    return Format("{:02}:{:02}:{:02},{:03}", HH, MM, SS, MS)
}
festigrat
Posts: 37
Joined: 02 Mar 2017, 06:58

Re: Mit Zeit rechnen im Format hh:mm:ss,sec

20 Apr 2018, 15:28

Hallo Ragnar,

wow, ich bin beeindruckt. Das Skript hat auf Anhieb geklappt! Ich versuche es nun zu verstehen. Ich bin mit dieser Art, dass die Variable oder in diesem Fall die Zeit in einer Klammer steht, noch nicht sehr vertraut. Ich hoffe mal, dass ich es irgendwann raffe. Ich hatte viel mit FormatTime experimentiert, aber es hat hinten und vorne nicht geklappt.
Jedenfalls war dies der letzte Baustein zu meinem ganzen Skript. Nun kann ich es fertigstellen.
Vielen Dank für die Unterstützung! :-)
just me
Posts: 5516
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Mit Zeit rechnen im Format hh:mm:ss,sec

21 Apr 2018, 03:35

Moin,

Du kannst auch die AHK Kommandos für Datum und Zeit nutzen. Ich hatte damit allerdings ein Problem, bis mir aufgefallen ist, dass das 23:45:[color=#BF0000]67[/color],890 in dem von Dir gewählten Beispiel ungültig ist.

Code: Select all

Start := "12:34:48,889"
Ende  := "23:45:59,890"

Minuend := ConvertToMilliseconds(Ende)
Subtrahend := ConvertToMilliseconds(Start)
Differenz := Minuend - Subtrahend
MsgBox % ConvertToHHMMSSMS(Differenz)

ConvertToMilliseconds(HHMMSSMS)
{
   Sekunden := A_YYYY . "0101" . StrReplace(SubStr(HHMMSSMS, 1, 8), ":")
   Sekunden -= A_YYYY, S
   Return (Sekunden * 1000) + SubStr(HHMMSSMS, 10)
}

ConvertToHHMMSSMS(Millisekunden)
{
   Zeitstempel := A_YYYY ; nur der Deutlichkeit halber, AHK rechnet auch mit leeren Variablen
   Zeitstempel += % (Millisekunden // 1000), S
   FormatTime, HHMMSS, %Zeitstempel%, HH:mm:ss
   Return (HHMMSS . Format(",{:03}", Mod(Millisekunden, 1000)))
}
Voraussetzungen, damit das funktioniert:
  • Start und Ende müssen gültige Zeitangaben enthalten.
  • Ende muss 'später' sein als Start.
  • Start und Ende müssen im selben Tag liegen.
festigrat
Posts: 37
Joined: 02 Mar 2017, 06:58

Re: Mit Zeit rechnen im Format hh:mm:ss,sec

23 Apr 2018, 04:00

Moin,

danke für die Antwort. Stimmt, die Zeit war natürlich in einem falschen Format. Diese Zeit wird ja später aus einer Liste ausgelesen und dann stimmt sie ja auf jeden Fall. Ich werde mir die Skripte genau anschauen und hoffentlich verstehe ich sie dann bald. Vielen Dank für die Unterstützung!

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 9 guests