如何使用HH:MM:SS将difftime对象格式化为字符串

时间:2018-07-09 00:26:41

标签: r difftime

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

我有一个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参数,但是它不起作用。 在此先感谢您的帮助, 尼克

3 个答案:

答案 0 :(得分:4)

一种可能的解决方案是:

library(hms)

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

答案 1 :(得分:2)

link可能有用。它几乎不解释您想要的东西。

答案 2 :(得分:1)

使用基数R的通用解决方案,灵感来自G. Grothendieck对问题的回答: 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)