13

我一直在尝试找到一种将输出格式化difftime为 HH:MM:SS.ms 的简单方法。到目前为止,我还没有遇到任何让我感到惊讶的事情。

我确实写了下面几乎可以做到的函数。限制是将数字表示为有效的单个数字。例如 2hr, 3mins, 4.5secs 变成 "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=':'))
}
4

2 回答 2

15

除了@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())
于 2012-06-13T15:55:03.483 回答
0
Merge_Charge_Point$Duration<- difftime(Merge_Charge_Point$EndConnectionDateTime, Merge_Charge_Point$StartConnectionDateTime, units="secs")

这是代码。但是此代码将数据转换为秒,但结果应该是时间字符串。

于 2016-12-06T15:28:50.450 回答