解析“第二天”的时间

时间:2013-05-24 21:23:28

标签: r time

是否有一个函数(内置或打包)可以将"25:15:00"这样的时间解析为“第二天1:15”?很遗憾,as.POSIXct不喜欢%X规范(相当于%H:%M:%S),

> as.POSIXct('25:15:00', format='%X')
[1] NA
> as.POSIXct('15:15:00', format='%X')
[1] "2013-05-24 15:15:00 CEST"

我在strptime文档中找不到合适的转换规范。

2 个答案:

答案 0 :(得分:2)

未经过全面测试,但您可以尝试此功能

parse_time <- function(x, format = "%X") {
    hour <- as.numeric(substr(x, 1, 2))
    delta <- ifelse(hour >= 24, 24 * 3600, 0)
    hour <- hour %% 24
    date <- paste0(hour, substr(x, 3, nchar(x)))
    strptime(date, format = format) + delta
}

parse_time(c('25:15:00', "23:10:00"))
##[1] "2013-05-25 01:15:00 GMT" "2013-05-24 23:10:00 GMT"

答案 1 :(得分:0)

现在有:

library(devtools)
install_github('kimisc', 'krlmlr')
library(kimisc)
hms.to.seconds('25:15:00')

它使用的方法与dickoa的代码略有不同:参数由gsub使用合适的正则表达式过滤,实际转换根本不涉及strptime。请参阅code