2017-01-09 69 views
1

2016年daylight savings time開始於2am on 2016-03-13美國東部時間,截止於2am on 2016-11-06。所以,2016-03-13 02:30:00不是有效的時間戳,並且2016-11-06 01:30:00發生了兩次。熊貓爲什麼不產生模糊的時間誤差?

我希望這個代碼拋出約模棱兩可,不存在時間錯誤,但它並不:

from pandas import Timestamp 

no_such_time = "2016-03-13 02:30:00" 
ambiguous_time = "2016-11-06 01:30:30" 
est = 'US/Eastern' 
utc = 'UTC' 

ts1 = Timestamp(no_such_time, tz=est).tz_convert(utc) 
ts2 = Timestamp(ambiguous_time, tz=est).tz_convert(utc) 

爲什麼熊貓認爲這兩個是有效的時間?

我正在使用熊貓0.14.1。

回答

1

在此代碼:

ts1 = pd.Timestamp(no_such_time, tz=est) 
ts2 = pd.Timestamp(ambiguous_time, tz=est) 

pandas都將這些時間轉換成一個時區感知時間戳。它似乎這樣做沒有任何潛在問題的意識(IE,它是非常寬容的)。轉換之後,時間戳已經以UTC和相關時區內部存儲。因此,要tz_convert的後續調用將正常工作:

ts1 = pd.Timestamp(no_such_time).tz_localize(est) 
ts2 = pd.Timestamp(ambiguous_time).tz_localize(est) 

在這些情況下pandas將提高:

ts1 = pd.Timestamp(no_such_time, tz=est).tz_convert(utc) 
ts2 = pd.Timestamp(ambiguous_time, tz=est).tz_convert(utc) 

如果你是想要確定時間戳是錯誤的,這是可以做到的分別爲NonExistentTimeErrorAmbiguousTimeError

+0

所以如果我正確理解這個答案,我應該總是安全地在'US/Eastern'和'UTC'之間轉換? – Batman

+0

謝謝你。 – Batman