是否可以使用HH:MM:SS格式打印持续时间?

时间:2017-03-02 13:47:52

标签: r datetime lubridate

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]“105s(~1.75分钟)”

是否可以将持续时间表示为HH:MM:SS?所以在这种情况下它将是:

  

0时01分45秒

2 个答案:

答案 0 :(得分:2)

您可以使用seconds_to_period中的lubridate 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"

这是基于之前的讨论 - Converting seconds to days: hours:minutes:seconds in r?

答案 1 :(得分:1)

留在浑厚的心态:

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))

通常情况下,句号类可能不准确(闰日等),但由于它首次通过持续时间,因此它应该是正确的。