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

Reply via email to