2017-09-24 51 views
2

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

回答

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" 
+0

Thx,它適用於我。 – Jiaxiang

+0

@Jiaxiang我很高興它的作品。請接受我的帖子作爲答案。 – www

相關問題