Sven Barth schrieb:

var
  st: TSystemTime;
  dt: TDateTime;
begin
  GetLocalTime(st);
  dt := SystemTimeToDateTime(st);
  Writeln(FormatDateTime('c', dt));
  GetSystemTime(st);
  dt := SystemTimeToDateTime(st);
  Writeln(FormatDateTime('c', dt));
  Readln;
end.

=== source end ===

As long as your time zone isn't UTC you will see two different times.

Okay, when you get the *decoded* date/time, the conversion into TDateTime is straight forward. [I missed that the WinAPI provides both times in that format].

But then I wonder why you *ever* want to convert TSystemTime into TDateTime, when it will be converted back again in the date/time formatting (and other) procedures. It would be much faster to display or write out a time stamp, based directly on TSystemTime.

POSIX gettimeofday() instead does not return a decoded date/time, so that Delphi uses localtime_r() to decode it. The inverse function must be used then, to decode a TDateTime for display and other date/time handling. When the RTL implements both these procedures, there should not remain any time difference in the Now() and other procedures on Windows and Linux, based on something like an tick count.

DoDi

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to