为什么lubridate :: ymd_hms在特定的日期时间不起作用?

问题描述

我有2019-03-10 02:43:00格式的日期时间POSIXct。请注意以下行为:

lubridate::ymd_hms("2019-03-10 02:43:00",tz = "America/Los_Angeles")
[1] NA
Warning message:
 1 Failed to parse.

lubridate::ymd_hms("2019-03-10 01:59:00",tz = "America/Los_Angeles")
[1] "2019-03-10 01:59:00 PST"

lubridate::ymd_hms("2019-03-10 03:00:00",tz = "America/Los_Angeles")
[1] "2019-03-10 03:00:00 PDT"

该日期在02:00-02:59之间的任何时间值都将为“ NA”。

解决方法

答案是,在2019-03-10的美国/太平洋时区更改为夏令时02:00,使这一天中的02:00-02:59之间的任何时间都不明确。

编辑:如Rui在评论中所述,3月的第二个星期日是正式切换到daylight savings in the US.

我正在发布邮件,希望其他人对进行故障排除有用。