Почему lubridate ::ymd_hms не работает для очень конкретной даты и времени?

#r #lubridate

#r #lubridate

Вопрос:

У меня есть дата-время 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`.

Ответ №1:

Ответ заключается в том, что в часовом поясе США / Тихоокеанского региона 2019-03-10 переход на летнее время в 02:00, что делает любое время в этот день между 02:00 — 02:59 неоднозначным.

Редактировать: Как отметил Rui в комментариях, 2-е воскресенье марта является официальным переходом на летнее время в США.

Я публикую в надежде, что другие найдут это полезным для устранения неполадок.

Комментарии:

1. Вы могли бы значительно улучшить вопрос, добавив ссылку на эту статью в Википедии о тихоокеанском переходе на летнее время. И format(as.Date("2019-03-10"), "%w") возвращает 0 , что означает, что это воскресенье. И как день 10 месяца, это 2- е воскресенье марта.