使用parse_date_time解析日期:为什么" 2004-04-04 02:00"失败?

时间:2017-03-09 22:13:06

标签: r lubridate

我正在使用lubridate::parse_date_time解析日期,有些日期不起作用。例如,为什么2004-04-04 02:00返回NA2004-04-04 01:002004-04-04 03: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。

1 个答案:

答案 0 :(得分:2)

2004-04-04 02:00中没有America/New_York。在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"