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

Parsing dates with parse_date_time: Why does "2004-04-04 02:00" fail?

我正在用 lubridate::parse_date_time 解析日期,但有些日期不起作用。例如,为什么 2004-04-04 02:00 return 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")

这里有另外两个例子 return 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。

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"