是否有一个函数(内置或打包)可以将"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
文档中找不到合适的转换规范。
答案 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。