13

difftime出力を HH:MM:SS.msにフォーマットする簡単な方法を見つけようとしています。これまでのところ、私が驚いたものに出くわしたことはありません。

私はほとんどそれを行う以下の関数を書きました。制限は、数字を有効な 1 桁として表示することです。たとえば、2 時間 3 分 4.5 秒は、「02:03:04.5」ではなく「2:3:4.5」になります。

誰かがより良い提案をしていますか?

format.timediff <- function(start_time) {
    diff = as.numeric(difftime(Sys.time(), start_time, units="mins"))
    hr <- diff%/%60
    min <- floor(diff - hr * 60)
    sec <- round(diff%%1 * 60,digits=2)

    return(paste(hr,min,sec,sep=':'))
}
4

2 に答える 2

15

@GSee のコメントに加えて、次のような関数を使用できます。

f <- function(start_time) {
  start_time <- as.POSIXct(start_time)
  dt <- difftime(Sys.time(), start_time, units="secs")
  # Since you only want the H:M:S, we can ignore the date...
  # but you have to be careful about time-zone issues
  format(.POSIXct(dt,tz="GMT"), "%H:%M:%S")
}
f(Sys.Date())
于 2012-06-13T15:55:03.483 に答える