47

datetime と pytz を使用して Python で datetime オブジェクトを作成しようとしていますが、表示されているオフセットが間違っています。

import datetime
from pytz import timezone

start = datetime.datetime(2011, 6, 20, 0, 0, 0, 0, timezone('Asia/Kolkata'))
print start

表示される出力は次のとおりです。

datetime.datetime(2011, 6, 20, 0, 0, tzinfo=<DstTzInfo 'Asia/Kolkata' HMT+5:53:00 STD>)

「Asia/Kolkata」は、HMT+5:53 ではなく GMT+5:30 の IST であることに注意してください。これは標準の Linux タイムゾーンですが、なぜ間違っているのでしょうか? また、どのように解決すればよいでしょうか?

4

1 に答える 1

81

参照: http://bytes.com/topic/python/answers/676275-pytz-giving-incorrect-offset-timezone

コメントでは、誰かがコンストラクターtzinfo.localize()の代わりに使用することを提案しています。datetime

>>> tz = timezone('Asia/Kolkata')
>>> dt = tz.localize(datetime.datetime(2011, 6, 20, 0, 0, 0, 0))
>>> dt
datetime.datetime(2011, 6, 20, 0, 0, tzinfo=<DstTzInfo 'Asia/Kolkata' IST+5:30:00 STD>)

更新:実際には、pytz の公式 Web サイトには、タイムゾーン オブジェクトを に渡す代わりに、常にlocalizeorを使用する必要があると記載されています。astimezonedatetime.datetime

于 2011-06-20T12:29:58.283 に答える