R 将秒转换为天:小时:分钟:秒
我想在R中将秒转换为小时分钟和秒 范例R 将秒转换为天:小时:分钟:秒,r,datetime,R,Datetime,我想在R中将秒转换为小时分钟和秒 范例 86400seconds-1day gmdate("d H:i:s",86400) 我就是这样试的。你可以试试 library(lubridate) seconds_to_period(86400) #[1] "1d 0H 0M 0S" seconds_to_period(48000) #[1] "13H 20M 0S" 如果需要格式化 td <- seconds_to_period(86400) sprintf('%02d %02d:%02
86400seconds-1day
gmdate("d H:i:s",86400)
我就是这样试的。你可以试试
library(lubridate)
seconds_to_period(86400)
#[1] "1d 0H 0M 0S"
seconds_to_period(48000)
#[1] "13H 20M 0S"
如果需要格式化
td <- seconds_to_period(86400)
sprintf('%02d %02d:%02d:%02d', day(td), td@hour, minute(td), second(td))
#[1] "01 00:00:00"
这也可以使用
kimisc
中的秒.to.hms
,尽管没有@akrun的回答那么优雅:
library(kimisc)
library(dplyr)
library(stringr)
HMS = seconds.to.hms(86400)
HMS = seconds.to.hms(48000)
HMS = seconds.to.hms(1e7)
HMS %>%
str_extract("^\\d+") %>%
as.numeric() %>%
{paste(.%/%24, .%%24)} %>%
str_replace(HMS, "^\\d+", .)
结果:
[1] "1 0:00:00"
[1] "0 13:20:00"
[1] "115 17:46:40"
使用base R时,以下各项应起作用:
dhms <- function(t){
paste(t %/% (60*60*24)
,paste(formatC(t %/% (60*60) %% 24, width = 2, format = "d", flag = "0")
,formatC(t %/% 60 %% 60, width = 2, format = "d", flag = "0")
,formatC(t %% 60, width = 2, format = "d", flag = "0")
,sep = ":"
)
)
}
> dhms(86400)
[1] "1 00:00:00"
> dhms(48000)
[1] "0 13:20:00"
> dhms(1e7)
[1] "115 17:46:40"
> dhms(c(86400, 48000, 1e7))
[1] "1 00:00:00" "0 13:20:00" "115 17:46:40"
dhms dhms(86400)
[1] "1 00:00:00"
>dhms(48000)
[1] "0 13:20:00"
>dhms(1e7)
[1] "115 17:46:40"
>dhms(c(86400480001E7))
[1] "1 00:00:00" "0 13:20:00" "115 17:46:40"
如果秒数不是整数,可以使用%03d%02d:%02d:%02g
打印秒的十进制值。或者,您需要通过sprintf
对其进行四舍五入以避免错误,因为%d
仅适用于整数。参见示例:gmdate()是一个R函数吗?
dhms <- function(t){
paste(t %/% (60*60*24)
,paste(formatC(t %/% (60*60) %% 24, width = 2, format = "d", flag = "0")
,formatC(t %/% 60 %% 60, width = 2, format = "d", flag = "0")
,formatC(t %% 60, width = 2, format = "d", flag = "0")
,sep = ":"
)
)
}
> dhms(86400)
[1] "1 00:00:00"
> dhms(48000)
[1] "0 13:20:00"
> dhms(1e7)
[1] "115 17:46:40"
> dhms(c(86400, 48000, 1e7))
[1] "1 00:00:00" "0 13:20:00" "115 17:46:40"