Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zeit in Millisekunden zwischen zwei Zeitstempeln (https://www.delphipraxis.net/137263-zeit-millisekunden-zwischen-zwei-zeitstempeln.html)

Oracle 17. Jul 2009 09:42


Zeit in Millisekunden zwischen zwei Zeitstempeln
 
ich habe eine Reihe von Messdaten, wo ich zu jedem Messwert auch den Zeitstempel mit now erfasst habe. Jetzt würde ich gerne wissen wie ich die Zeitspanne in Millsekunden zwischen zwei solcher Zeitpunkte herausfinde.
Ich steige nicht so ganz hinter das Floating Point Zeitformat.

Vielen Dank schonmal im Vorraus :)

samso 17. Jul 2009 09:45

Re: Zeit in Millisekunden zwischen zwei Zeitstempeln
 
Delphi-Quellcode:
frac(now)*MillisecsPerDay
Die Auflösung ist aber sicher nicht so prickelnd. Besser ist vermutlich GetTickCount. Noch besser soll angeblich der HighPerformanceCounter sein, habe ich in meinen Versuchen nie bestätigen können.

jfheins 17. Jul 2009 09:45

Re: Zeit in Millisekunden zwischen zwei Zeitstempeln
 
Falls es keine Funktion MilliSecondsBetween() oder so gibt (guck mal in Dateutils) würde ich einfach die Differenz nehmen (die dann in ganzen Tagen ist) und diese mit 1000*60*60*24 = 86400000 [Millisekunden/Tag] multiplizieren. Vorausgesetzt, die Auflösung reicht bs in den Millisekundenbereich, sollte dir das die Anzahl an Millisekunden leifern ;)

himitsu 17. Jul 2009 09:45

Re: Zeit in Millisekunden zwischen zwei Zeitstempeln
 
erstes Problem, Now hat nicht die genauigkeit für Millisekunden (+/- 16 ms)

ansonsten ist es nur etwas Mathe

der Ganzzahlanzeil von TDateTime (der Type von Now) entspricht den Tagen,
also ist der Nachkommaanteil für die Uhrzeit

1/24 = Stunden
1/24/60 = Minuten
1/24/60/60 = Sekunden
1/24/60/60/1000 = Millisekunden

Abs(a - b) * 24*60*60*1000 = Differenz in ms

[edit]
wieso sind grad alle so schnell?

Oracle 24. Jul 2009 10:34

Re: Zeit in Millisekunden zwischen zwei Zeitstempeln
 
In DateUtils gibts tatsache eine Funktion MilliSecondsBetween, und diese Funktioniert prima. Vielen Dank :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz