将以数字形式表示的小时转换为HMS格式。

4
如何将表示小时的数字从数值格式转换为HMS格式。
例如:
8.0 -> 08:00:00
0.5 -> 00:30:00
0.25 -> 00:15:00

这个回答解决了你的问题吗?如何将十进制时间转换为时间格式 - Limey
请问您能否指定所需输出的“class” - 是“character”还是专用的时间类?如果是后者,您可以使用data.table::as.ITime(x*3600) - Henrik
或者 chron::times(x/24) - Henrik
将十进制小时转换为HH:MM:SS - Henrik
3个回答

5

另一个基本的R选项:

x <- c(8, 0.5, 0.25)
format(as.POSIXct(x * 3600, origin = '1970-01-01', tz = 'UTC'), '%T')
#[1] "08:00:00" "00:30:00" "00:15:00"

1
优雅的解决方案。 - s_baldur

4

将时间转换为秒,使用 lubridate 中的 seconds_to_periods,并将其转换为 hms

hms::hms(lubridate::seconds_to_period(floor(v1 * 60 *60)))
#08:00:00
#00:30:00
#00:15:00

数据

v1 <- c(8, 0.5, 0.25)

4

这里有一个基于 R 的选项

h <- x%/%1
m <- floor(x%%1 * 60)
s <- round((x%%1 * 60)%%1*60)
sprintf("%02d:%02d:%02d",h,m,s)

这样的,使得。
> sprintf("%02d:%02d:%02d",h,m,s)
[1] "08:00:00" "00:30:00" "00:15:00" "03:45:22"

数据

x <- c(8.0,0.5,0.25,3.756)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接