Формат времени, показывающий часы, минуты, секунды
Я пытался найти простой способ форматирования вывода из 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=':'))
}
Ответы
Ответ 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")
Это код. Но этот код преобразует данные в секунды, но результат должен быть строкой времени.