タイムゾーン対応のdatetime
オブジェクトをUTCに変換してから、元のタイムゾーンに戻そうとしています。次のスニペットがあります
t = datetime(
2013, 11, 22, hour=11, minute=0,
tzinfo=pytz.timezone('Europe/Warsaw')
)
今ipythonで:
In [18]: t
Out[18]: datetime.datetime(
2013, 11, 22, 11, 0, tzinfo=<DstTzInfo 'Europe/Warsaw' WMT+1:24:00 STD>
)
次に、UTCへの変換とその逆の変換を試みます。私は同じ表現を期待しています:
In [19]: t.astimezone(pytz.utc).astimezone(pytz.timezone('Europe/Warsaw'))
Out[19]: datetime.datetime(
2013, 11, 22, 10, 36, tzinfo=<DstTzInfo 'Europe/Warsaw' CET+1:00:00 STD>
)
それでもOut[18]
およびOut[19]
異なります。どうしたの?
ドキュメント http://pytz.sourceforge.net/ には、「残念ながら、標準のdatetimeコンストラクターのtzinfo引数を使用しても、多くのタイムゾーンでpytzが機能しない」と記載されています。コード:
t = datetime(
2013, 5, 11, hour=11, minute=0,
tzinfo=pytz.timezone('Europe/Warsaw')
)
これに従って動作しないので、代わりにlocalizeメソッドを使用する必要があります。
t = pytz.timezone('Europe/Warsaw').localize(
datetime(2013, 5, 11, hour=11, minute=0))