Time Zones, Python and the Nokia N70

From rukapedia
Revision as of 17:39, 14 July 2006 by Peter (talk | contribs)
Jump to: navigation, search

Since I started hacking with Python my Nokia N70 mobile phone, I've been confused by how it handles (or doesn't handle) time zones and daylight savings time. This page is an attempt to document what it actually supports and when.

Summary

A limitation of Python on the Nokia N70 is that the time returned by gmtime() isn't time-zone aware. The Python documentation says that the function should "Convert a time expressed in seconds since the epoch to a struct_time in UTC in which the dst flag is always zero", however the value returned actually changes when the phone's daylight savings time value is changed, which shouldn't happen.

Time at GMT, Daylight Savings Time OFF

At 20:00 GMT, I set the current city to London, United Kingdom, but left Daylight Savings Time off. The phone shows 20:00 --

Clock1.jpg

And Python returns 20:00 for both gmtime() and localtime():

>>> time.localtime()
(2006, 7, 14, 20, 0, 0, 4, 195, -1)
>>> time.gmtime()
(2006, 7, 14, 20, 0, 0, 4, 195, -1)

Result: GMT is correct, local time one hour early.

Time at GMT, Daylight Savings Time ON

At 20:09 GMT, I set the current city to London, United Kingdom, and turned Daylight Savings Time on. The phone shows 21:09 --

Clock2.jpg

And Python returns 21:09 for both gmtime() and localtime():

>>> time.localtime()
(2006, 7, 14, 21, 9, 0, 4, 195, -1)
>>> time.gmtime()
(2006, 7, 14, 21, 9, 0, 4, 195, -1)

Result: GMT is one hour ahead, local time is correct

Time at GMT-4, Daylight Savings Time OFF

At 20:12 GMT, I set the current city to Halifax, Nova Scotia (GMT-4), but left Daylight Savings Time off. The phone shows 16:12 --

Clock3.jpg

And Python returns 16:12 for localtime() and 20:12 for gmtime():

>>> time.localtime()
(2006, 7, 14, 16, 12, 0, 4, 195, -1)
>>> time.gmtime()
(2006, 7, 14, 20, 12, 0, 4, 195, -1)

Result: GMT is correct, local time one hour early.

Time at GMT-4, Daylight Savings Time ON

At 20:18 GMT, I set the current city to Halifax, Nova Scotia (GMT-4), and turned Daylight Savings Time on. The phone shows 17:18 --

Clock4.jpg

And Python returns 17:18 for localtime() and 21:18 for gmtime():

>>> time.localtime()
(2006, 7, 14, 17, 18, 0, 4, 195, -1)
>>> time.gmtime()
(2006, 7, 14, 21, 18, 0, 4, 195, -1)

Result: GMT is one hour ahead, local time is correct