我无法理解 pytz 中“Etc/GMT-5”时区和 UTC 之间的转换。
>>> dt = datetime(2009, 9, 9, 10, 0) # September 9 2009, 10:00
>>> gmt_5 = pytz.timezone("Etc/GMT-5")
>>> gmt_5.localize(dt)
datetime.datetime(2009, 9, 9, 10, 0, tzinfo=<StaticTzInfo 'Etc/GMT-5'>)
到目前为止一切都很好,但后来我尝试将其转换为 UTC:
>>> gmt_5.localize(dt).astimezone(pytz.utc)
datetime.datetime(2009, 9, 9, 5, 0, tzinfo=<UTC>)
所以在我看来,当从 GMT-5 的 10:00 转换为 UTC 时,我得到 05:00?我希望 pytz 给我 15:00 代替。
我错过了什么?
编辑:我已经确认美国/东部时区的时区转换正如我所期望的那样工作:
>>> eastern = pytz.timezone("US/Eastern")
>>> eastern.localize(dt)
datetime.datetime(2009, 9, 9, 10, 0, tzinfo=...) # Too long
>>> pytz.utc.normalize(eastern.localize(dt).astimezone(pytz.utc))
datetime.datetime(2009, 9, 9, 14, 0, tzinfo=<UTC>)
编辑 2:我已经确认,当我使用 Etc/GMT+5 时,我得到 15:00,这是我期望从 Etc/GMT-5 得到的。这是一个 pytz 错误吗?