8

我认为这是一个非常简单的问题,但是我无法解决它,因此将不胜感激。

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

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

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

> 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论点,但它不起作用。提前感谢您的帮助,尼克

4

3 回答 3

7

一种可能的解决方案是:

library(hms)

duration <- difftime("2018-07-08 20:08:12 EDT", "2018-07-08 20:07:56 EDT")
as.hms(duration)
# 00:00:16
于 2018-07-09T00:37:04.097 回答
4

使用基数 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)
于 2018-07-09T01:49:45.877 回答
2

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

于 2018-07-09T00:40:00.027 回答