Dňa 28.6.2016 o 9:18 Michael Van Canneyt napísal(a):
On Tue, 28 Jun 2016, Russ Davies wrote:
Hi,
My local time zone is GMT +2, and have noticed that with V3.0.0, that
the LocalTimeToUniversal() function is adding the offset instead of
subtracting it:
uses sysutils, dateutils;
var
LocalTime: TDateTime;
begin
LocalTime := Now();
writeln('Offset :', GetLocalTimeOffset());
writeln('Local Time :', TimeToStr(LocalTime));
writeln('UTC :', TimeToStr(LocalTimeToUniversal(LocalTime)));
end.
Under 2.6.4 produces:
Offset : -120
Local Time : 05:29:13
UTC : 03:29:13
With 3.0.0:
Offset :-120
Local Time :05:31:16
UTC :07:31:16
Comparing dateutil.inc for both versions, in functions
UniversalTimeToLocal() and LocalTimeToUniversal() the signs of the
offsets have been changed
IIRC original implementation was based on Microsoft logic of
GetTimeZoneInformation, where is stated:
"All translations between UTC time and local time are based on the
following formula:
UTC = local time + bias
The bias is the difference, in minutes, between UTC time and local time."
-Laco.
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel