JavaScript
x
4
1
>>> import pytz
2
>>> pytz.timezone('Asia/Hong_Kong')
3
<DstTzInfo 'Asia/Hong_Kong' LMT+7:37:00 STD>
4
A seven hour and 37 minute offset? This is a little strange, does anyone experience the same issue?
In fact I’m getting different behavior between
JavaScript
1
9
1
import pytz
2
from datetime import datetime
3
hk = pytz.timezone('Asia/Hong_Kong')
4
5
dt1 = datetime(2012,1,1,tzinfo=hk)
6
dt2 = hk.localize(datetime(2012,1,1))
7
if dt1 > dt2:
8
print "Why?"
9
Advertisement
Answer
Time zones and offsets change over the years. The default zone name and offset delivered when pytz creates a timezone object are the earliest ones available for that zone, and sometimes they can seem kind of strange. When you use localize
to attach the zone to a date, the proper zone name and offset are substituted. Simply using the datetime
constructor to attach the zone to the date doesn’t allow it to adjust properly.