2012-07-13 50 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構造函數將區域附加到日期,就不能正確調整。