2012-06-28 38 views
12

我有一個日期和時間,我試圖在Python中進行組合。時間是知曉時區的。如何在Python中結合可識別時區的日期和時間?

但是,當我嘗試並結合它們時,我得到了錯誤的時間。

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) 

這將打印2012-07-07 00:00:00-05:00,其標準化至2012-07-07 01:00:00-04:00。這是爲什麼發生?我怎樣才能避免它?

+0

我假設通過「避開它」,即使UTC偏移由於夏令時而改變,您也希望本地時間保持固定? –

+0

我期待着,如果我有時間'MIDNIGHT = time(hour = 0,tzinfo = NYC_TIME)',它會保持午夜,不管我插入什麼日期。顯然,情況並非如此。 –

回答

3

沒有附加日期的時間必須假定它不在夏令時期間。一旦你給它添加了一個日期,那個假設就可以得到糾正。區域偏移量發生變化,時間也發生變化,以保持UTC相同。

+1

這很奇怪,因爲如果您比較兩個沒有靜態偏移的時區感知時間,他們會引發一個天真的時區錯誤 - 也就是說,他們拒絕承擔關於是否處於夏令時的任何內容。 –

相關問題