能否使用HH:MM:SS格式打印时间间隔?

4
t1<-as.POSIXct("2017-03-02 11:58:20")
t2<-as.POSIXct("2017-03-02 12:00:05")
print(lubridate::as.duration(lubridate::interval(t1,t2)))

[1] "105秒(约1.75分钟)"

是否可以使用HH:MM:SS表示持续时间?那么在这种情况下应该是:

00:01:45

2个回答

4

你可以使用lubridate中的seconds_to_period函数,并结合sprintf使用。

library(lubridate)
td <- seconds_to_period(difftime(t2, t1, units = "secs"))
sprintf('%02d:%02d:%02d', td@hour, minute(td), second(td))
#[1] "00:01:45"

这是基于早期的讨论 - 如何将秒转换为天:小时:分钟:秒在R中?


3
保持 lubridate 的思维模式:
t1<-as.POSIXct("2017-03-02 11:58:20")
t2<-as.POSIXct("2017-03-02 12:00:05")
dur <- lubridate::as.period(lubridate::as.duration(lubridate::interval(t1,t2)))
sprintf('%02d %02d:%02d:%02d', day(dur), hour(dur), minute(dur), second(dur))

通常,期间类可能不准确(闰年等),但由于它是通过持续时间首次传递的,所以应该是正确的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接