【问题标题】:How to format a difftime object to a string with HH:MM:SS如何使用 HH:MM:SS 将 difftime 对象格式化为字符串
【发布时间】:2018-07-09 00:26:41
【问题描述】:

我认为这是一个非常简单的问题,但是我无法解决它,所以任何帮助将不胜感激。

我有一个difftime对象,生成如下:

> duration <- difftime(end_time, start_time)
> duration
Time difference of 15.74106 secs

end_timestart_time 对象是 POSIXct 对象,如下所示:

> c(start_time, end_time)
[1] "2018-07-08 20:07:56 EDT" "2018-07-08 20:08:12 EDT"

我需要 duration 以 HH:MM:SS 格式显示 - 即像这样,在字符串中:

"00:00:15"

这个问题有简单的答案吗?我玩过format 参数,但它不起作用。 在此先感谢您的帮助, 尼克

【问题讨论】:

    标签: r difftime


    【解决方案1】:

    一种可能的解决方案是:

    library(hms)
    
    duration <- difftime("2018-07-08 20:08:12 EDT", "2018-07-08 20:07:56 EDT")
    as.hms(duration)
    # 00:00:16
    

    【讨论】:

    • 嗨@Ozan147 - 感谢您的回答。这很好用!
    【解决方案2】:

    受 G. Grothendieck 对问题的回答启发,使用基数 R 的通用解决方案: Outputting difftime as HH:MM:SS:mm in R

    duration <- difftime(end_time, start_time, units="secs")
    x <- abs(as.numeric(duration))
    sprintf("%02d:%02d:%02d:%02d", x %/% 86400,  x %% 86400 %/% 3600, x %% 3600 %/% 
    60,  x %% 60 %/% 1)
    

    【讨论】:

      【解决方案3】:

      这个link 可能有帮助。它解释了你想要的很少或更多。

      【讨论】:

        猜你喜欢
        • 2021-07-16
        • 2018-05-22
        • 2012-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-27
        相关资源
        最近更新 更多