是否有一个函数(内置或打包)可以解析像"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
而且我在文档中找不到合适的转换规范。
未经过彻底测试,但您可以尝试此功能
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"
现在有:
library(devtools)
install_github('kimisc', 'krlmlr')
library(kimisc)
hms.to.seconds('25:15:00')
它使用了与 dickoa 的代码略有不同的方法:gsub
使用合适的正则表达式过滤参数,实际转换完全不涉及strptime
。见代码。