[Gambas-user] UTC conversion Tip for Date class doesn't work as expected

T Lee Davidson t.lee.davidson at ...626...
Sat Nov 29 00:57:57 CET 2014


http://gambaswiki.org/wiki/lang/type/date says, "Dates can be converted 
to numbers. Then the number returned is the number of days stored 
internally and the fraction of day represented by the number of 
microseconds."

And ,there is a tip box that says:
[[ tip
As date are internally stored in UTC, the time offset between local time 
and UTC is represented by the fractional part  of the floating point 
number returned by the date to float conversion.

So, to convert a date into UTC, you do the following:
     UTCDate = LocalDate - Frac(Date(Now))
]]

1. It is unclear to me how the fractional part can represent both "the 
fraction of day represented by the number of microseconds" *and* "the 
time offset between local time and UTC", especially since it would 
always be changing.

2. A simple command-line app is apparently also confused:
Public Sub Main()

   Dim dDate1, dDate2 As Date

   Print "System.TimeZone: " & System.TimeZone
   Print "Number of hours to add: " & Str(System.TimeZone / 60 / 60)
   Print "Frac(Date(Now)): " & Frac(Date(Now)) & "\n"

   dDate1 = Now
   Print "Date now    : " & Format(dDate1, "yyyy/mm/dd hh:nn")
   dDate2 = dDate1 - Frac(Date(Now)) 'To follow example
   Print "UTC date now: " & Format(dDate2, "yyyy/mm/dd hh:nn") & "\n"

   Print "Difference: " & DateDiff(dDate1, dDate2, gb.Hour)

End

On my system, this produced:
System.TimeZone: 18000
Number of hours to add: 5
Frac(Date(Now)): 0.79166666651145

Date now    : 2014/11/28 18:49
UTC date now: 2014/11/27 23:49

Difference: -19


Instead of adding 5 hours, it subtracted 19.


-- 
Lee
__________

"Artificial Intelligence is no match for natural stupidity."

P.S.
[System]
Gambas=3.6.0
OperatingSystem=Linux
Kernel=3.10.60-desktop-1.mga3
Architecture=x86
Distribution=Mageia 3
Desktop=KDE4
Theme=Oxygen
Language=en_US.UTF-8
Memory=1005M
[Libraries]
Cairo=libcairo.so.2.11200.12
Curl=libcurl.so.4.3.0
DBus=libdbus-1.so.3.7.2
GStreamer=libgstreamer-0.10.so.0.30.0
GStreamer=libgstreamer-1.0.so.0.5.0
GTK+3=libgtk-3.so.0.600.4
GTK+=libgtk-x11-2.0.so.0.2400.17
OpenGL=libGL.so.1.2.0
Poppler=libpoppler.so.34.0.0
Qt4=libQtCore.so.4.8.6
SDL=libSDL-1.2.so.0.11.4




More information about the User mailing list