hi all
Also da kann doch etwas nicht stimmen. Konvertiere ich ein Unix-Time-Val nach TDateTime, zurück und dann wieder nach TDateTime. Dann habe ich bei der Ausgabe EINE Sekunde mehr. das darf doch nicht sein oder? (Siehe code dazu unten)
Zu meiner eigentlichen Problemstellung: Ich muss basierend auf einem Unix-Time-Val eine Anzahl Millisekunden addieren. Die Weiterverarbeitung erfolgt danach 1x mit dem neuen Unix-Time-Val und 1x mit der nach TDateTime konvertierten Wert.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| procedure TForm1.Button1Click(Sender: TObject); var str : string; ut1,ut2 : TUnixTimeVal; dt : TDateTime;
begin
ut1.tv_Sec := $4fe1cf7a; ut1.tv_uSec:= $0008af27;
dt := JclDateTime.UnixTimeToDateTime(ut1.tv_Sec) + ut1.tv_uSec / 1000 / MSecsPerDay; DateTimeToString(str, 'yyyy/mm/dd - hh:nn:ss.zzz', dt); memo1.lines.Add(str);
ut2.tv_Sec := DateTimeToUnixTime( dt ); ut2.tv_uSec := (MilliSecondOf( dt )) * 1000;
dt := JclDateTime.UnixTimeToDateTime(ut2.tv_Sec) + ut2.tv_uSec / 1000 / MSecsPerDay; SysUtils.DateTimeToString(str, 'yyyy/mm/dd - hh:nn:ss.zzz', dt); memo1.lines.Add(str); end; |
Hat irgend jemand eine Erklärung dazu? Danke!
Moderiert von
Narses: Beiträge zusammengefasstthema hat sich erledigt; DateTimeToUnixTime( dt ); berücksticht auch den uSec anteil - was eben nicht gut ist...