Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - getcurrenttimemillis (= Java) -> Delphi


Seven of Nine - Mi 01.08.12 06:38
Titel: getcurrenttimemillis (= Java) -> Delphi
Guten Morgen
mit welchem Code ermittelt man (sicher) die identische Zeit in [ms] welche die Java-Function "getcurrenttimemillis" ermittelt.
Diese ermittelt ja meines Wissens die Zeit Seit 1.1.1970, UTC, in Millisekunden

ich dachte mir mit

Delphi-Quelltext
1:
TimeDifferenceMS := MilliSecondsBetween(now , EncodeDateTime(1970,1,1,0,0,0,0) );                    


bin mir leider aber nicht sicher ob das stimmt.

lG Martin


jaenicke - Mi 01.08.12 07:23

Das sieht schon richtig aus, ja. Die Doku sagt auch genau das:
http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/System.html#currentTimeMillis()

Ansonsten bleibt nur ausprobieren wie exakt die beiden Werte in der Realität übereinstimmen.


Seven of Nine - Mi 01.08.12 08:43

Hallo
Ich bin mir halt von der Logik her noch nichts sicher ob das wirklich passt.

denn sowohl das aktuelle "Now" sowie auch das "1970,1,1,0,0,0,0" müssen den entsprechen richtigen Offset zur UTC haben.
Dies berücksichtigt neben dem gleichbleibendem Delta wegen dem GMT-Versatz (bei uns +1h)
ja auch das Delta wegen Sommer/Winterzeit!
beim 1970 Datum ist das ja "fix", aber bei "Now" kann das sowohl Winter als auch Somemrzeit sein.

Verständich formuliert?

lG M


Andreas L. - Mi 01.08.12 11:35

DateTimeToUnix gibt die Sekunden seit Beginn der Unix-Epoche 1.1.1970 zurück. Ob die Funktion den genannten GMT-Offset berücksichtigt weiß ich nicht. Denke aber das der zurückgegebene Wert UTC entspricht.


Delphi-Quelltext
1:
2:
3:
4:
5:
var
  Epoch: int64;
begin
  Epoch := DateTimeToUnix(Now);
end;


Seven of Nine - Fr 03.08.12 05:46

Getestet:

Delphi-Quelltext
1:
TimeDifferenceMS := MilliSecondsBetween(now , EncodeDateTime(1970,1,1,0,0,0,0) );                    
ist ein ausreichend genaues Pendant zu getcurrenttimemillis (Java)

Danke für eueren Support!
lG Martin