使用a.m./p.m解析时间戳

时间:2011-10-25 01:41:29

标签: r timestamp strptime

我有一个格式化25/03/2011 9:15:00 p.m.

等时间戳的文件

如何使用strptimeas.POSIXct将此文本解析为日期时间类?

这几乎可以起作用:

> as.POSIXct("25/03/2011 9:15:00", format="%d/%m/%Y %I:%M:%S", tz="UTC")
[1] "2011-03-25 09:15:00 UTC"

这是什么不起作用,但我想工作:

> as.POSIXct("25/03/2011 9:15:00 p.m.", format="%d/%m/%Y %I:%M:%S %p", tz="UTC")
[1] NA

我在MS Windows上使用R版本2.13.2(2011-09-30)。我的工作区域是“C”:

Sys.setlocale("LC_TIME", "C")

2 个答案:

答案 0 :(得分:13)

看来AM / PM指标不能包含标点符号。删除标点符号后尝试:

td <- "25/03/2011 9:15:00 p.m."
tdClean <- gsub("(.)\\.?[Mm]\\.?","\\1m",td)
as.POSIXct(tdClean, format="%d/%m/%Y %I:%M:%S %p", tz="UTC")
# [1] "2011-03-25 21:15:00 UTC"

答案 1 :(得分:1)

刚刚看到这个,作为另一种选择,您可以使用stringr包。

library(stringr)
data$date2 <- str_sub(data$date, end = -4) 
# this removes the punctuation but holds onto the A/P values
data$date2 <- str_c(data$date2, 'm') 
# adds the required m