2010-11-01 18 views
11

Şu anki saati EDT saat diliminde almaya çalışırken en zor zamanları yaşıyorum. Ben Doğu bir tzinfo nesnesini tanımlamak için anlamaya ben mümkün değildir sahip ...Python - Belirli bir saat diliminin tarihçesi

print datetime.time(datetime.now()).strftime("%H%M%S") 

datetime.now ([z]), isteğe bağlı bir z bağımsız değişken vardır, ama tip datetime.tzinfo olmak zorunda Saat dilimi ... Oldukça basit olması gerekiyor gibi görünüyor, ancak ek bir kütüphane ithal etmeden bunu anlayamıyorum.

cevap

20

EDT saat dilimi hakkında çok konuşmuyorum, ancak bu örnek amacınıza hizmet etmelidir.

import datetime 

datetime.datetime.now tipi datetime.tzinfo olmalıdır saat dilimi bilgisi geçirilmelidir. İşte gerekli işlevlerin bazılarıyla uygulayan bir sınıf. Bu bir örnek olarak gün ışığı tasarrufu ayrıntıları vermiyorum.

class EST(datetime.tzinfo): 
    def utcoffset(self, dt): 
     return datetime.timedelta(hours=-5) 

    def dst(self, dt): 
     return datetime.timedelta(0) 

Şimdi saat dilimi doğruluğu ile bilgi almak için bu kullanabilirsiniz:

print datetime.datetime.now(EST()) 

Çıktı:

2010-11-01 13:44:20.231259-05:00 
+0

Teşekkürler - bir zaman dilimi belirtmek için bir bütün sınıf oluşturmalısınız (sadece basit bir değişken geçirerek) – wuntee

+0

@wuntee: Thats doğru değil. Bu bir açıklama olarak ifade edildi. Adw tarafından verilen cevap, tzinfo bilgisini iletmek için kullanılabilecek kütüphane - pytz içerir. Yeniden kullanım ve dst vb. Gibi özellikler pytz modülü tarafından zaten sağlanmış durumda. Tzinfo'yu açıklamaya odaklandığım için pytz modülünü sağlamak için – pyfunc

8

tzinfo sınıf yalnızca bir arayüz, uygulamak gerekecektir tanımlar Kendiniz (örnek için belgelere bakın) veya bunu uygulayan bir üçüncü taraf modülü kullanın, örneğin pytz.

Edit: Üzgünüm, başka bir kitaplığı almak istemediğinizi özledim.

+0

+1. – pyfunc

İlgili konular