Чтение времени с долями секунды и AM/PM

Вероятно, это очень простой вопрос, но как мне прочитать дату и время с долями секунды и индикатор AM/PM в R?

> x <- "2014/10/20 3:00:49.324 PM"

> as.POSIXct(x, format="%Y/%m/%d %H:%M:%S")
[1] "2014-10-20 03:00:49 MYT"                   # wrong; should be 15:00:49

> as.POSIXct(x, format="%Y/%m/%d %I:%M:%S")
[1] "2014-10-20 03:00:49 MYT"                   # wrong; should be 15:00:49

> as.POSIXct(x, format="%Y/%m/%d %H:%M:%S %p")
[1] NA

> as.POSIXct(x, format="%Y/%m/%d %I:%M:%S %p")
[1] NA

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

> x <- "2014/10/20 15:00:49.324"
> as.POSIXct(x, format="%Y/%m/%d %H:%M:%S")
[1] "2014-10-20 15:00:49 MYT"

> x <- "2014/10/20 3:00:49 PM"
> as.POSIXct(x, format="%Y/%m/%d %I:%M:%S %p")
[1] "2014-10-20 15:00:49 MYT"

person Hong Ooi    schedule 04.03.2015    source источник
comment
И с lubridate::ymd_hms(x).   -  person    schedule 04.03.2015


Ответы (1)


Для дробных секунд используйте формат %OS (он плохо документирован, но является одним из примеров в ?strptime). Вы также должны помнить об использовании %I (вместо %H) в сочетании с %p. Кроме того, не забудьте установить tz, если это необходимо.

as.POSIXct("2014/10/20 3:00:49.324 PM", format = "%Y/%m/%d %I:%M:%OS %p")
## "2014-10-20 15:00:49 IDT"
person David Arenburg    schedule 04.03.2015