我一直试图找到一种简单的方法,将difftime
的输出格式化为HH:MM:SS.ms。到目前为止,我还没有遇到任何我感到惊讶的事情。
我确实编写了下面几乎完成的功能。限制是将数字表示为重要的单个数字。例如2小时,3分钟,4.5秒变为" 2:3:4.5"而不是" 02:03:04.5"
有没有人有更好的建议?
format.timediff <- function(start_time) {
diff = as.numeric(difftime(Sys.time(), start_time, units="mins"))
hr <- diff%/%60
min <- floor(diff - hr * 60)
sec <- round(diff%%1 * 60,digits=2)
return(paste(hr,min,sec,sep=':'))
}
答案 0 :(得分:14)
除了@ GSee的评论之外,你还可以使用这样的函数:
f <- function(start_time) {
start_time <- as.POSIXct(start_time)
dt <- difftime(Sys.time(), start_time, units="secs")
# Since you only want the H:M:S, we can ignore the date...
# but you have to be careful about time-zone issues
format(.POSIXct(dt,tz="GMT"), "%H:%M:%S")
}
f(Sys.Date())
答案 1 :(得分:0)
Merge_Charge_Point$Duration<- difftime(Merge_Charge_Point$EndConnectionDateTime, Merge_Charge_Point$StartConnectionDateTime, units="secs")
这是代码。但是这段代码将数据转换为秒,但结果应该是时间字符串。