2011-06-20 14 views
18

pythonでdatetimeオブジェクトとpytzオブジェクトを作成しようとしていますが、オフセットが間違っています。 30としないHMT + 5:53Python datetimeオブジェクトのオフセットが正しく表示されない

import datetime 
from pytz import timezone 

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

示す出力は、GMT + 5 'アジア/コルカタ' ISTあること

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

注です。これは標準的なLinuxのタイムゾーンですが、なぜこのように間違っているのですか?どのように解決できますか?

+0

[pytzバグレポートツール](https://bugs.launchpad.net/pytz) – kojiro

+0

@kojiro:これはバグではありません。 http://pytz.sourceforge.net/ –

答えて

34

参照:コメントでhttp://bytes.com/topic/python/answers/676275-pytz-giving-incorrect-offset-timezone

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

>>> 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>) 

UPDATE:あなたは常にdatetime.datetimeにタイムゾーンオブジェクトを渡すのではなく、localizeまたはastimezoneを使用する必要があります実際には、official pytz website状態。

+0

を参照してくださいこれは非常に助けてくれてありがとう。 – compbugs

+3

これはとても狂っています。ご回答有難うございます。 – Simanas

+0

バイトリンクの説明は素晴らしいです、ありがとう! – Maxim

関連する問題