1

我想将给定时间从香港时区转换为澳大利亚时区,但对于任何历史日期(不仅仅是今天)。在澳大利亚,夏令时于今年 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 小时。但是现在,根据夏令时,澳大利亚和香港之间的时差是3小时,4月2日之后,时差将是2小时。

我错过了什么吗?在 DST 打开和 DST 关闭时获得正确时间偏移的正确方法是什么。

问候, 阿洛克

4

0 回答 0