2012-06-28 37 views
12

Tôi có ngày và giờ tôi cố kết hợp bằng Python. Thời gian là nhận biết múi giờ.Làm cách nào để kết hợp ngày và giờ nhận biết múi giờ bằng Python?

Tuy nhiên, khi tôi thử và kết hợp chúng, tôi nhận được thời gian sai.

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) 

này in 2012-07-07 00:00:00-05:00, mà bình thường hóa đến 2012-07-07 01:00:00-04:00. Tại sao chuyện này đang xảy ra? Làm thế nào tôi có thể tránh nó?

+0

Tôi giả định bằng cách "tránh nó" bạn muốn thời gian địa phương vẫn cố định ngay cả khi bù đắp UTC thay đổi do Tiết kiệm ánh sáng ban ngày? –

+0

Tôi đã mong đợi, nếu tôi có một thời gian 'MIDNIGHT = thời gian (giờ = 0, tzinfo = NYC_TIME)', rằng nó sẽ vẫn còn nửa đêm bất kể ngày tôi đã bỏ nó vào. Rõ ràng, đó không phải là trường hợp. –

Trả lời

3

Thời gian không có ngày đính kèm phải giả định thời gian không có trong khoảng thời gian Tiết kiệm ánh sáng ban ngày. Một khi bạn đính kèm một ngày với nó, giả định đó có thể được sửa chữa. Các thay đổi bù đắp vùng, và thời gian thay đổi cũng như giữ nó ở mức tương đương UTC.

+1

Điều đó thật kỳ lạ, vì nếu bạn so sánh hai thời điểm nhận biết múi giờ không có bù đắp tĩnh, chúng sẽ làm tăng một lỗi múi giờ ngây thơ - nghĩa là chúng từ chối giả định bất kỳ điều gì về việc chúng có trong Tiết kiệm ánh sáng ban ngày hay không. –

Các vấn đề liên quan