Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中,有没有办法将中文时间字符从12小时设置正确转换为24小时设置?_R_Lubridate - Fatal编程技术网

在R中,有没有办法将中文时间字符从12小时设置正确转换为24小时设置?

在R中,有没有办法将中文时间字符从12小时设置正确转换为24小时设置?,r,lubridate,R,Lubridate,我使用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日上午1

我使用
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"

TconvIf
上午
表示“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"
库(lubridate)

时间@嘉祥我很高兴它能起作用。请接受我的帖子作为答案。