2011-06-20 25 views
18

datetime ve pytz kullanarak python'da bir datetime nesnesi oluşturmayı deniyorum, gösterilen ofset yanlış. 30 ve HMT + 5: 53Python datetime nesnesi yanlış zaman dilimi ofsetini göster

import datetime 
from pytz import timezone 

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

gösterilen çıkış GMT + 5'tir 'Asya/Kalküta' IST olduğunu

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

Not olduğunu. Bu standart bir linux zaman dilimi, neden yanlış anladım ve nasıl çözerim?

+0

[pytz hata raporu aracı] (https://bugs.launchpad.net/pytz) – kojiro

+0

@kojiro: Bu bir hata değil. Bkz. Http://pytz.sourceforge.net/ –

cevap

34

bakınız: yorumlarında http://bytes.com/topic/python/answers/676275-pytz-giving-incorrect-offset-timezone

, birisi yerine hile yapar datetime yapıcı, tzinfo.localize() kullanmayı önermektedir.

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

GÜNCELLEME: Aslında, her zaman localize veya astimezone yerine datetime.datetime bir zaman dilimi nesnesi geçme kullanmalıdır official pytz website devletler.

+0

Teşekkürler bu çok yardımcı oldu. – compbugs

+3

Bu çok çılgın. Cevabınız için teşekkürler. – Simanas

+0

Bayt bağlantılarındaki açıklama mükemmel, bunun için teşekkürler! – Maxim

İlgili konular