Jetzt hab ich mich nochmal mit der Angelegenheit befaßt und es scheint was rübergewachsen zu sein:
Code: Select all
Zahl := 53606 ; wird hiermit zu Anzahl Sekunden erklärt
hh := Floor(Zahl / 3600)
mm := Floor(Mod(Zahl, 3600) / 60)
ss := Mod(Zahl, 60)
MsgBox % hh ":" mm ":" ss
; oder:
MsgBox % Floor(Zahl/3600) ":" Floor(Mod(Zahl,3600)/60) ":" Mod(Zahl,60)
; paßt.
Sodann durfte ich feststellen, daß das dasselbe ist, was just me mit
Format realisiert hast, wobei bei
Format durch die "Formatierung" (haha)
Floor eingespaart wird. Insofern habe ich jetzt auch einen Zugang zum Verständnis von
Format gefunden. Vielen Dank!
Zu allem Überfluß dann noch die Entdeckung von Beispiel #3 bei
FormatTime: "Wandelt eine bestimmte Anzahl von Sekunden in Stunden, Minuten und Sekunden um (hh:mm:ss-Format)." - was ich bis dato aber immer überlesen habe, weil ich nur immer gleich auf die Skripte schau. Und das dort ist wieder mal so typisch funktions-verklausuliert, was zu verstehen ich bestenfalls nach dem "Urlaub" angehe
Meine eingangs gestellte Aufgabe könnte nun so formuliert werden:
Code: Select all
Start := A_Now
sleep 3000
Stop := A_Now
Time := Stop
Time -= %Start%, s
FormatTime, ShowStart, %Start%, hh:mm:ss
FormatTime, ShowStop, %Stop%, hh:mm:ss
ShowTime := Floor(Time/3600) ":" Floor(Mod(Time,3600)/60) ":" Mod(Time,60)
MsgBox %ShowStart%`tStartzeit`n%ShowStop%`tStopzeit`n--------------------`n%ShowTime%`tDauer
Hat aber noch 2 Schönheitsfehler:
1. Meine Berechnung mit den Mathe-Funktionen schreibt keine führenden Nullen. In diesem Beispiel mit den 3 Sek heißt es dann eben nur "0:0:3". Nach meiner Lesart der Mathe-Seite gibt es dort keine Funktion für das Erzwingen von führenden Nullen. Insofern ist die Methode über
Format letztlich doch die Bessere, weshalb sich just me dafür nicht unbedingt rügen bräuchte, sach ich mal.
2. Bei
A-Now steht zu lesen: "Die interne Variable A_Now enthält die aktuelle Ortszeit im YYYYMMDDHH24MISS-Format." Ich seh aber nur das 12er-Format im pm-Zeitraum. Am Rechner kanns nicht liegen, der zeigt das 24er. Erklärung?
Auf der Suche nach einer perfekten Standard-Formulierung taugt auch das Beispiel #3 bei
FormatTime nur bedingt, weil es zumindest bei meinen Tests ebenfalls keine führenden Nullen kennt.
Das Problem bei meinem angestrebten MsgBox-Ergebnis ist wohl auch, daß es 2 Bereiche zur gleichen Zeit will, was "in der Natur" so eher selten vorkommen dürfte: Entweder man will den aktuellen Zeitpunkt in gewohnter Lesart darstellen, oder man will eine Zeitdifferenz zw. 2 Ereignissen messen oder stoppen, wobei es dann i.d.R. egal ist, um welche Uhrzeit das stattgefunden hat.