2017-03-09 36 views
1

我解析日期为lubridate::parse_date_time,有些日期不起作用。例如,为什么2004-04-04 02:00返回NA2004-04-04 01:002004-04-04 03:00工作?用parse_date_time解析日期:为什么“2004-04-04 02:00”失败?

library("lubridate") 
"2004-04-04 01:00" %>% parse_date_time(c("Ymd HM"), tz = "America/New_York") 
"2004-04-04 02:00" %>% parse_date_time(c("Ymd HM"), tz = "America/New_York") 
"2004-04-04 03:00" %>% parse_date_time(c("Ymd HM"), tz = "America/New_York") 

这里是返回NA另外两个例子:

"20110313 0240" %>% parse_date_time(c("Ymd HM"), tz = "America/New_York") 
"20130310 0255" %>% parse_date_time(c("Ymd HM"), tz = "America/New_York") 

我使用lubridate 1.6.0版本。

+4

夏令时更改...直接从1:59到3:00 – HubertL

回答

2

America/New_York中没有2004-04-04 02:00。在2004-04-04 01:59:59 EST之后,时钟向前打到2004-04-04 03:00:00 EDT,开始夏令时。

您的时间戳可能存储在EST5而不是America/New_York

> "2004-04-04 01:00" %>% parse_date_time(c("Ymd HM"), tz = "EST5") %>% with_tz("America/New_York") 
[1] "2004-04-04 01:00:00 EST" 
> "2004-04-04 02:00" %>% parse_date_time(c("Ymd HM"), tz = "EST5") %>% with_tz("America/New_York") 
[1] "2004-04-04 03:00:00 EDT" 
+0

谢谢!有没有简单的方法来检查和纠正错误的值,以便2004-04-04 02:00被记录为“2004-04-04 03:00”? – user2503795

+0

我用一个例子更新了答案,使用EST5时区解析时间戳。 –

相关问题