将数字转换为 HH:MM:SS

Convert a number to HH:MM:SS

我有一个号码154958。我想转换为 HH:MM:SS.

我正在寻找的答案是 15:49:58

您可以试试下面的方法。

> x <- "154958"
> gsub("^(\d{2})(\d{2})(\d{2})$", "\1:\2:\3", x)
[1] "15:49:58"
> 

> gsub("(\d{2})(?!$)", "\1:", x, perl=T)
[1] "15:49:58"

或者更简单(因为它是时间戳,字符数是已知的)

paste(substr(x,1,2),substr(x,3,4),substr(x,5,6),sep=":")

我会将其视为格式化输出:

formatC(as.integer("154958"), 
        big.mark = ":", big.interval = 2L)
#[1] "15:49:58"

转换为日期然后子字符串:

substr(strptime("154958", format = "%H%M%S"), 12, 20)

或者更好的版本(感谢@Roland):

format(strptime("154958", format = "%H%M%S"), format = "%H:%M:%S")

如果你想从中得到一个真正的日期,试试下面的方法。

strptime("154958", "%H%M%S")

默认为当天,因此如果今天是 2015 年 3 月 24 日,您将得到:

[1] "2015-03-24 15:49:58 CET"

使用chron

library(chron)
times(chron(times = "154958", format = "hms"))
## [1] 15:49:58

这可能是上述答案的衍生,但您可以使用 "hms" 包:

library(hms)

strptime("154958", "%H%M%S") %>% hms::as.hms()