【问题标题】:format time span to show hours, minutes, seconds格式化时间跨度以显示小时、分钟、秒
【发布时间】:2012-06-16 14:11:06
【问题描述】:

我一直在尝试找到一种将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=':'))
}

【问题讨论】:

  • @GSee,sprintf 很棒。我将来肯定会使用它。非常感谢。

标签: r time format


【解决方案1】:
Merge_Charge_Point$Duration<- difftime(Merge_Charge_Point$EndConnectionDateTime, Merge_Charge_Point$StartConnectionDateTime, units="secs")

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

【讨论】:

    【解决方案2】:

    除了@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())
    

    【讨论】:

    • 非常感谢,这样好多了。我对“。”有点困惑。在'POSIXct'前面,所以我必须做更多的阅读,但它工作得很好。我是 R 的新手,非常感谢您的帮助。
    • @getting-there:它只是一个简单的函数,从数字向量构造POSIXct 对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 2020-10-16
    • 2020-09-08
    相关资源
    最近更新 更多