「Etc/GMT-5」タイムゾーンとUTC(pytz)の間の変換を理解するのに問題があります。
>>> 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のバグですか?