2017-01-09 59 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