首页 文章

在R中转换简单的AM / PM时间

提问于
浏览
3

我搜索并搜索了几个小时,但找不到答案 . 我需要转换时间格式为“1:36:22 PM” . 我自己不会以这种格式存储数据,但我从其他程序员那里继承了这些文件 .

我尝试了as.POSIXct()和strptime()的各种排列,但是无法实现 . 例如,这未能发现PM的重要性:

t <- "1:36:22 PM"
> as.POSIXct(t, format = "%H:%M:%S")
[1] "2016-09-08 01:36:22 BST"

这失败了:

> strptime(t, "%H:%M:%S")
[1] NA

奇怪的是,由于我无法理解的原因,从输入CAN工作中减少秒数:

> t <- "1:30:00 PM"
> strptime(t, "%I:%M %p")
[1] NA
> t <- "1:30 PM"
> strptime(t, "%I:%M %p")
[1] "2016-09-08 13:30:00 BST"

我只想要这个工作:

t <- "1:30:00 PM"
SOME COMMAND HERE HERE
[1] "13:30:00"

有任何想法吗?

2 回答

  • 2

    使用%l和%p .

    strptime(t, "%l:%M:%S %p")
    
  • 2

    你尝试过使用rubridate包吗?它可以使用"parse_date_time"函数中的 %p indicator 来处理AM / PM .

    library(lubridate)
    t <- "1:36:22 PM"
    parse_date_time(t, '%I:%M:%S %p')
    [1] "2016-09-08 13:36:22 UTC"
    

    lubridate documentation

    %I: 十进制小时数(01-12或1-12) .

    %M: 十进制数分钟(00-59或0-59) .

    %S: 第二个十进制数字(00-61或0-61) .

    %P: 语言环境中的AM / PM指示符 . 与I一起使用而不与H一起使用 . 某些语言环境中的空字符串 .

相关问题