[fpc-devel] FPC V3.0.0 LocalTimeToUniversal() error
wkitty42 at windstream.net
wkitty42 at windstream.net
Tue Jun 28 10:14:09 CEST 2016
On 06/27/2016 11:55 PM, 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:
i get the same over here...
> Comparing dateutil.inc for both versions, in functions UniversalTimeToLocal()
> and LocalTimeToUniversal() the signs of the offsets have been changed
yeah, it does look backwards... i'm currently -0400 and the program says
2016 Jun 28 03:06:20 -0400
myuser at mymachine:~/development/projects/misc$ ./timetest.2.6.4
Offset :240
Local Time :03:06:21
UTC :07:06:21
2016 Jun 28 03:06:21 -0400
myuser at mymachine:~/development/projects/misc$ ./timetest.3.0.0
Offset :240
Local Time :03:06:22
UTC :23:06:22
i don't understand why LocalTimeToUniversal() isn't more simple... subtracting a
negative is the same as adding the positive and subtracting a positive is, well,
subtracting... it looks like they were trying to catch and protect from division
by zero when the offset is 0 or there is no offset which results in the offset
being 0... the following should work and be easier to follow...
Function LocalTimeToUniversal(LT: TDateTime;TZOffset: Integer): TDateTime;
begin
if (TZOffset <> 0) then
Result := LT - EncodeTime(TZOffset div 60, TZOffset mod 60, 0, 0)
else
Result := LT;
end;
at least they're not trying to determine which timezone specification is in
use... the two that i know of are backwards from each other... using the
standard (POSIX??) form, i'm EST5EDT (-0500 and -0400) but using the other form
(America/New York or Etc/GMT-5 ???) i'm 0500 and 0400 which means that the
formula for the standard form is subtracting whereas the other one is adding
when going from local time to GMT time... yeah, it gets really twisted and using
the wrong form, while correct for your area, can result in time being off by 12
hours (IIRC)...
--
NOTE: No off-list assistance is given without prior approval.
*Please keep mailing list traffic on the list* unless
private contact is specifically requested and granted.
More information about the fpc-devel
mailing list