在R中,有没有办法将中文时间字符从12小时制转换为24小时制?
问题描述:
我用lubridate
来做转换。支持英文字符,但不支持中文字符。例如,在R中,有没有办法将中文时间字符从12小时制转换为24小时制?
> 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"
答
如果上午
意味着“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"
Thx,它适用于我。 – Jiaxiang
@Jiaxiang我很高兴它的作品。请接受我的帖子作为答案。 – www