2011-09-07 12 views
8

Saat dilimi bilgisiyle dize biçiminde zaman damgası var ve bunu, yerel saat dilimimi kullanarak doğru tarih/saat görüntülemek için dönüştürmek istiyorum. Yani mesela için ... BenPython pytz Zaman damgasını (dize biçimi) bir saat diliminden diğerine dönüştürme

timestamp1 = 2011-08-24 13:39:00 +0800 

var ve bu zaman dilimi pytz kullanarak denedim

timestamp2 = 2011-08-24 15:39:00 +1000 

dsiplay için +1000 ofset ama nasıl birçok örnekler göstererek bulamadım söylemek dönüştürmek istiyorum Ofset bilgilerini kullan. Bu kesin sorunu tasvir eden stackoverflow üzerinde bulduğum bir başka bağlantı ise here. Bunu pytz kullanarak yapabileceğimin daha iyi bir yolu olduğunu umuyordum. Önceden tüm önerileriniz için teşekkürler :).

GÜNCELLEME

Teşekkür Cixate. Seninkiyle çok benzer bir çözüm buldum. Bu bağlantılar yararlı Bulunan - LINK1 ve LINK2

herkesin bir datetime nesnesi bir kez

from datetime import datetime 
import sys, os 
import pytz 
from dateutil.parser import parse 

datestr = "2011-09-09 13:20:00 +0800" 
dt = parse(datestr) 
print dt 
localtime = dt.astimezone (pytz.timezone('Australia/Melbourne')) 
print localtime.strftime ("%Y-%m-%d %H:%M:%S") 
2011-09-09 15:20:00 
+0

onay kutusunu tıklatarak doğru olarak Cixate yanıtını işaretlemeyi tercih edin. – wberry

cevap

9

datetime.astimezone temel dönüşüm yapacak yarar için çözüm Gönderme. Eğer bir dizeden bir datetime nesnesi almaya çalışıyorsanız, python-dateutil yüklemek pip ve kadar basit: En son çözüm Cixate önerisine yakın olduğundan,

>>> from dateutil.parser import parse 
>>> from dateutil.tz import tzoffset 
>>> dt = parse('2011-08-24 13:39:00 +0800') 
datetime.datetime(2011, 8, 24, 13, 39, tzinfo=tzoffset(None, 28800)) 
>>> dt.astimezone(tzoffset(None, 3600)) 
datetime.datetime(2011, 8, 24, 6, 39, tzinfo=tzoffset(None, 3600)) 
+0

Cixate teşekkürler ... Ben sadece dateutil.parser ve datetime.astimezone kullanarak çözüm aldım. Benim çözümüm seninkinden biraz farklı. Cehaletimi bağışla, ama lütfen "tzoffset (None, 3600)" ile – Angela

+0

arasındaki zaman dilimi bilgisini nasıl aldığınızı detaylandırır mısınız? Örneğinizde "+1000" ofsetine çevirmek istediniz, maalesef bunu "+0100 olarak okudum "Ama müdür aynıdır. Tzoffset() 'in ilk parametresi, bunu bilmemeniz durumunda None olabilir. İkincisi, saniye cinsinden UTC'den uzaklıktır. Yani 1 saat için 3600 ya da 10 saat için 36000. – six8

+0

Açıklama için teşekkürler Cixate. – Angela