2012-12-11 24 views
5

örn: Gördüğünüz gibidönüştürme datetime nesnesi o saat diliminde saniye Epoch'a

>>> print dt
2012-12-04 19:00:00-05:00

, ben çağın bu tarih saat nesnesini dönüştürmek Bu nasıl datetime nesnesi var GMT -5 saniyede.

Bunu nasıl yaparım?

+4

Epoch saniye, saat dilimi tarafından yok. Tanım olarak onlar UTC ve dünya çapında aynıdır. Her bir saat dilimi, yerel saat için anında dönüşür. –

+0

@jimmcnamara Bu anahtar. Son derece yardımcı efendim. –

cevap

6

Tarih saatiniz bir naif datetime değildir, içindeki saat dilimini bilir (yazdırma durumunuz -5'tir). dt nesnesi naif datetime nesnesi olsaydı Yani sadece

>>> import time, pytz 
>>> utc = pytz.timezone('UTC') 
>>> utc_dt = utc.normalize(dt.astimezone(utc)) 
>>> time.mktime(utc_dt.timetuple()) 
1355270789.0 # This is just to show the format it outputs 

Epoch'a bunu dönüştürmek önce UTC olarak ayarlamak gerekiyorsa, bulurken zamandan tasarruf aydınlığa uymayı zaman dilimleri ile çalışmak gerekiyordu GMT 0 arasında doğru saatler. Örneğin, kışın Romanya, +2 ve yaz aylarında +3 var.

>>> import time,pytz 
>>> timezone = pytz.timezone('America/New_York') 
>>> local_dt = timezone.localize(dt) 

Artık olmayan bir naif datetime var ve ben ilk açıkladı gibi çağ zamanını elde edebilirsiniz: sizin -5 Örneğin

, New-York yapacağız. İyi eğlenceler

+1

Muhtemelen "-05: 00" belirtilen tarih ve saat dilimi için doğru ofseti kodlar, o zaman neden geriye doğru çalışma zahmetine gidersiniz? –

+0

Teşekkür ederim, baskıdaki -5'i kaçırdım. Cevabı, naif olmayan datetime'dan nasıl dönüştürüleceğini açıklamak için uyarladım. – mihaicc

+0

Bu çözüm benim için daha iyi çalıştı. http://stackoverflow.com/a/11111177/969984 –

İlgili konular