在R中将difftime输出为HH:MM:SS:mm

Ixx*_*xie 1 r

我想标题说明了一切:我产生了一对POSIX时间对象Sys.time(),我希望以一致的方式显示差异。我希望时间范围从毫秒到天不等,但是找不到找到以difftime格式显示输出的方法DD:HH:MM:SS:mm

有什么简洁的R方法可以做到这一点(理想情况下没有包)?

G. *_*eck 8

帖子的主题和内容要求使用不同的格式,因此我们假定帖子正文中的内容是所需要的,即DD:HH:MM:SS。

假设输入,x必须是秒的向量或difftime对象:

Fmt <- function(x) UseMethod("Fmt")
Fmt.difftime <- function(x) {
     units(x) <- "secs"
     x <- unclass(x)
     NextMethod()
}
Fmt.default <- function(x) {
   y <- abs(x)
   sprintf("%s%02d:%02d:%02d:%02d", 
      ifelse(x < 0, "-", ""), # sign
      y %/% 86400,  # days
      y %% 86400 %/% 3600,  # hours 
      y %% 3600 %/% 60,  # minutes
      y %% 60 %/% 1) # seconds
}

# test
now <- Sys.time()
now100 <- now + 100

Fmt(now100 - now)
## [1] "00:00:01:40"

Fmt(now - now100)
## "-00:00:01:40"
Run Code Online (Sandbox Code Playgroud)