2012-07-13 79 views
30
>>> import pytz 
>>> pytz.timezone('Asia/Hong_Kong') 
<DstTzInfo 'Asia/Hong_Kong' LMT+7:37:00 STD> 

7小时37分钟抵消?这有点奇怪,有没有人遇到同样的问题?pytz奇怪的时区问题

其实我得到

import pytz 
from datetime import datetime 
hk = pytz.timezone('Asia/Hong_Kong') 

dt1 = datetime(2012,1,1,tzinfo=hk) 
dt2 = hk.localize(datetime(2012,1,1)) 
if dt1 > dt2: 
    print "Why?" 
+0

准确的问题是什么? [“1885年1月1日香港时间首次设定于当地时间(格林威治标准时间+7:36:41),当时皇家天文台香港时间为13:00](http://en.wikipedia.org/ wiki/Hong_Kong_Time#Time_standards) – KurzedMetal 2012-07-13 15:49:05

+0

请参阅http://stackoverflow.com/questions/11442183/pytz-timezone-shows-weird-results-for-asia-calcutta/11442571#11442571 – 2012-07-13 15:55:42

回答

43

时区和偏移之间不同的行为改变多年来。 pytz创建时区对象时提供的默认区域名称和偏移量是该区域最早可用的区域名称,并且有时它们看起来有点奇怪。当您使用localize将区域附加到日期时,会替换正确的区域名称和偏移量。只需使用datetime构造函数将区域附加到日期,就不能正确调整。