Подтвердить что ты не робот

Формат времени, показывающий часы, минуты, секунды

Я пытался найти простой способ форматирования вывода из difftime в HH: MM: SS.ms. До сих пор я не сталкивался с тем, что меня удивило.

Я написал функцию ниже, которая почти делает это. Ограничение - это представление чисел как значительных одиночных цифр. например 2hr, 3mins, 4.5secs становится "2: 3: 4.5" вместо "02: 03: 04.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=':'))
}
4b9b3361

Ответ 1

В дополнение к комментарию @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())

Ответ 2

Merge_Charge_Point$Duration<- difftime(Merge_Charge_Point$EndConnectionDateTime, Merge_Charge_Point$StartConnectionDateTime, units="secs")

Это код. Но этот код преобразует данные в секунды, но результат должен быть строкой времени.