我使用lubridate
进行转换。支持英文字符而不是中文字符是很好的。例如,
> library(lubridate)
> mdy_hm("01/31/2017 08:01 PM")
[1] "2017-01-31 20:01:00 UTC"
> mdy_hm("01/31/2017 08:01 AM")
[1] "2017-01-31 08:01:00 UTC"
很明显,将“AM”和“PM”条件分开。但是对于另一个例子,
> ymd_hm("2017年9月10日上午12:36")
[1] "2017-09-10 12:36:00 UTC"
无法将“AM”状态转换为“PM”状态。
Thx @ycw,它对我有用。在这里,我写了一个函数。
Tconv <- function(x){
time = x
y <- ifelse(grepl("日 上午", time), paste(time, "AM", sep = " "),
ifelse(grepl("日 下午", time), paste(time, "PM", sep = " "),
time))
z <- lubridate::ymd_hm(y)
return(z)
}
> time <- data_frame(date = "2017年9月10日 上午12:36", "2017年9月10日 下午12:36")
> Tconv(time)
[1] "2017-09-10 00:36:00 UTC" "2017-09-10 12:36:00 UTC"
答案 0 :(得分:1)
如果上午
表示“AM”,则可以使用grepl
检测此字符串是否存在,如果TRUE
,则将“AM”添加到该字符串。
library(lubridate)
time <- c("2017年9月10日上午12:36")
time2 <- ifelse(grepl("上午", time), paste(time, "AM", sep = " "), time)
ymd_hm(time2)
[1] "2017-09-10 00:36:00 UTC"