我希望将给定时间从香港时区转换为澳大利亚时区,但任何历史性日子(不仅仅是今天)。在澳大利亚,DST将于今年4月2日开始实施。当我按照DST应用之前和之后的日期进行计算时,应该有1小时的差异。但我认为这两种情况的DST补偿没有任何差别。
>>> import pytz
>>> import datetime as dt
>>> autz=pytz.timezone("Australia/Sydney")
>>> hktz=pytz.timezone("Asia/Hong_Kong")
>>> x1=dt.datetime(2012,1,1,0,0,0,tzinfo=autz)
>>> x2=dt.datetime(2012,5,5,0,0,0,tzinfo=autz)
>>> hk1=x1.astimezone(hktz)
>>> hk2=x2.astimezone(hktz)
>>> x1
datetime.datetime(2012, 1, 1, 0, 0, tzinfo=<DstTzInfo 'Australia/Sydney' EST+10:00:00 STD>)
>>> hk1
datetime.datetime(2011, 12, 31, 22, 0, tzinfo=<DstTzInfo 'Asia/Hong_Kong' HKT+8:00:00 STD>)
>>> x2
datetime.datetime(2012, 5, 5, 0, 0, tzinfo=<DstTzInfo 'Australia/Sydney' EST+10:00:00 STD>)
>>> hk2
datetime.datetime(2012, 5, 4, 22, 0, tzinfo=<DstTzInfo 'Asia/Hong_Kong' HKT+8:00:00 STD>)
>>> autz=pytz.timezone("Australia/Sydney")
如果将x1与hk1和x2与hk2进行比较,则在两种情况下,时间之差为2小时。但是现在,根据DST,AU和HK之间的差异是3小时,而在4月2日之后,差异将是2小时。
我错过了什么吗?在DST期间和DST关闭时获得正确时间偏移的正确方法是什么。
此致 阿洛克