zeit berechnung zwischen zwei zeiten aber inklusive millisekunden

  • hallo zusammen,

    ich hatte diesen thread hier gesehen: AutoIt.de Thread und als ich dazu noch eine frage stellen wollte, wurde ich mit diesen worten begruesst:

    Zitat

    Die letzte Antwort auf dieses Thema liegt mehr als 365 Tage zurück. Das Thema ist womöglich bereits veraltet. Bitte erstelle ggf. ein neues Thema.

    also gut, dann erstelle ich eben ein neues thema dazu:

    ich bastel an einem script wo ich zwei mal eine zeitberechnung benoetige. zum einen habe ich eine checkbox wo ich einen anfangspunkt setzen moechte und eine zweite checkbox wo ich einen endpunkt setzen moechte und dann soll in einem label die zeitdifferenz hierzu ausgegeben werden. allerdings inklusive millisekunden!

    die zweite stelle im script macht quasi das selbe, aber man hat dropdowns fuer stunden, minuten, sekunden und millisekunden als start zeit und das selbe nochmals als endzeit.

    jetzt geht es um die berechnung der differenz zwischen den zeiten. so wie ich erkennen kann bieten mir die meisten funktionen nur eine berechnung von bis zu sekunden an, aber nicht fuer den millisekunden bereich. kann mich da einer ggf. in die richtige richtung lenken?

    _Now() und _NowTime() und auch _NowCalc() bieten mir alle nur bis sekunden an aber eben keine millisekunden.

    gibt es da noch sinnige alternativen zu?

    gruss

    ConsoleWrite("=====================>>> "&"About Me:"&" <<<=====================" & @CRLF)
    ConsoleWrite("Someday I will know how to do it but that day is not today!" & @CRLF)
    ConsoleWrite("===================>>> "&"bankesbusters"&" <<<===================" & @CRLF)

  • Zitat

    zum einen habe ich eine checkbox wo ich einen anfangspunkt setzen moechte und eine zweite checkbox wo ich einen endpunkt setzen moechte und dann soll in einem label die zeitdifferenz hierzu ausgegeben werden.

    Mit TimerInit() die Anfangszeit setzen und mit TimerDiff() die Differenz zu diesem Zeitpunkt bestimmen.

    Zum Zweiten Vorhaben mit der selbstdefinierten Startzeit müsste man sich wohl was schreiben hierfür.
    Ich hätte da spontan gesagt mit _Date_Time_EncodeSystemTime() zwei Zeitstempel zu erstellen (geht auch eine eigene Struktur wie z.B. ein Array) und dann eine eigene Funktion, welche die Differenz in Millisekunden berechnet.

    Edit: Mal umgesetzt was ich gerade meinte:

    Einmal editiert, zuletzt von AspirinJunkie (4. Juni 2025 um 10:55)

  • hi,

    okay, also ich fange mal mit den checkboxen an:

    also: mit dieser zeile $AutomaticTimeCalc = StringFormat("%02d:%02d:%02d.%02d0", @HOUR, @MIN, @SEC, @MSEC) bekomme ich zwar eine korrekt formatierte zahlenangabe aber keine berechnungen die richtig oder brauchbar sind. ... also testweise 3 sekunden laufen lassen zwischen checkbox start aktivieren und checkbox stop aktivieren ... ergebnis dann:

    11:07:02.310 (das war die startzeit und keine berechnung zwischen den zwei zeiten)

    mit der anderen zeile GUICtrlSetData($Autocalculation, $AutomaticTimeCalc) bekomme ich ein ergebnis wie zum beispiel dieses: 4958.9203 welches ja falsch ist. es sollte in etwa so aussehen:

    00:00:04.203

    was ubersehe ich da?

    ConsoleWrite("=====================>>> "&"About Me:"&" <<<=====================" & @CRLF)
    ConsoleWrite("Someday I will know how to do it but that day is not today!" & @CRLF)
    ConsoleWrite("===================>>> "&"bankesbusters"&" <<<===================" & @CRLF)

  • bankesbusters was funktioniert denn an dem Beispiel von AspirinJunkie nicht, dies einzubauen?
    Das gibt doch bereits die ms aus, wobei $tNow = Startzeit und $tThen = Endzeit wäre.

    Diese ms musst du dann natürlich noch in hh, mm, ss , ms umrechnen und entsprechend ausgeben.

    Achtung: Ich würde in Zeile 22 time1 von time2 abziehen (aktuell andersherum), sonst bekommst du immer negative Werte.

  • Um mal das Beispiel von AspirinJunkie zu nehmen, Zeile ab Zeile 10 folgendes eingetragen:

    Code
    Global Const $ms = _SystemTimeDiff($tNow, $tThen)
    ConsoleWrite("Zeitdifferenz: " & $ms & " ms" & @CRLF)
    ConsoleWrite("Zeitdifferenz: " & StringFormat("%.2d:%.2d:%06.3f", (Floor($ms / 3600000)), (Floor(Mod($ms,3600000) / 60000)), (Mod(Mod($ms,3600000),60000) / 1000)) & @CRLF)

    Und Zeile 22 wie erwähnt verändert: Return _SystemTime2JulianMSecs($tTime2) - _SystemTime2JulianMSecs($tTime1)

    Ergibt dann als Ausgabe (z.B. bei 35456000ms):

    Zeitdifferenz: 35456123 ms
    Zeitdifferenz: 09:50:56.123

    Hier ein kleines sample mit GUI aber Augabe nur in der Konsole:

    Credits to AspirinJunkie and zaNergal habs nur zusammen gefügt :P

    3 Mal editiert, zuletzt von Moombas (4. Juni 2025 um 11:55)

  • Moombas : vorhin war das beispiel von aspirinjunkie noch NICHT da. deswegen auch meine frage. das ist genau das, was ich in einem anderen beitrag bemaengelt habe: nicht einfach draufhauen ohne nachzudenken, das jenes beispiel spaeter hinzugefuegt wurde sieh man ja auch am einwand von aspirinjunkie:

    Zitat

    Edit: Mal umgesetzt was ich gerade meinte:

    trotzdem danke. ich glaube ich kann damit auf jeden fall etwas anfangen.

    ConsoleWrite("=====================>>> "&"About Me:"&" <<<=====================" & @CRLF)
    ConsoleWrite("Someday I will know how to do it but that day is not today!" & @CRLF)
    ConsoleWrite("===================>>> "&"bankesbusters"&" <<<===================" & @CRLF)

  • Hier hat keiner "drauf gehauen" und ich habe jetzt nicht auf die beiden Zeitstempel geschaut, muss ich zugeben aber für mich (Stand jetzt) auch nicht zu 100% ersichtlich:

    Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen.

    Würde ich hier irgendwo "drauf hauen" wäre der Ton weitaus anders.

  • Ich brauchte _DateDiff(), um Millisekunden einzuschließen.

  • ein kleines Beispiel für die Berechnung:

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.