使用小数秒和AM / PM读取时间

时间:2015-03-04 08:36:00

标签: r datetime posixct

这可能是一个非常基本的问题,但是如何将小数秒 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"

1 个答案:

答案 0 :(得分:3)

对于小数秒,请使用%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"