2012-06-28 16 views
12

Python'da birleştirmeye çalıştığım bir tarihim var. Zaman dilimi farkında. Bununla birlikte, bunları birleştirip birleştirdiğimde yanlış zaman alırım.Python'da bir saat dilimini doğru tarih ve saati nasıl birleştiririm?

import pytz 
from datetime import time, date 
NYC_TIME = pytz.timezone('America/New_York') 

start_date = date(2012, 7, 7) 
start_time = time(hour = 0, tzinfo = NYC_TIME) 
combined = datetime.combine(start_date, start_time) 
print combined 
print NYC_TIME.normalize(combined) 

Bu 2012-07-07 01:00:00-04:00 için normale hangi 2012-07-07 00:00:00-05:00 yazdırır. Bu neden oluyor? Bunu nasıl önleyebilirim?

+0

"Önlemek" ile, UTC ofsetinin Gün Işığı Tasarrufu nedeniyle değişmesine rağmen yerel saatin sabit kalmasını istersiniz. –

+0

Bekliyordum, eğer bir zamanım var ise MIDNIGHT = time (saat = 0, tzinfo = NYC_TIME) 'dır, hangi tarihte girdiğim olursa olsun gece yarısı kalır. Görünüşe göre, durum böyle değil. –

cevap

3

Bitiş tarihi olmayan bir zaman, Yaz Saati uygulamasında bulunmadığını varsaymalıdır. Bir tarih ekledikten sonra, bu varsayım düzeltilebilir. Bölge ofseti değişir ve zaman aynı UTC eşdeğerinde tutmak için de değişir.

+1

Bu garip, çünkü statik bir ofseti olmayan iki zaman dilimi farkında sürelerini karşılaştırırsanız, naif bir zaman dilimi hatası ortaya çıkarırlar, yani Gün Işığından Tasarruf olup olmadıklarına dair herhangi bir şey varsaymayı reddederler. –