有一篇帖子展示了自午夜以来如何使用lubridate
从时间到秒。从午夜到一天的几秒钟怎么样?
所以,如何使用06:52:32获取24752.05,如何使用24752.05获取06:52:32?
答案 0 :(得分:7)
对午夜时间戳和偏移量之和使用as.POSIXct()
,可以通过设置TZ进行调整。
在我的默认时区:
R> as.POSIXct(trunc(Sys.time(), units="days") + 24752.05)
[1] "2013-01-16 06:52:32.04 CST"
R>
请注意,答案(就像前面的问题一样)可以在基础R中得到很好的解决,持续的谣言说每次问题都必须涉及到不能承受的问题。
答案 1 :(得分:3)
仅使用lubridate
种类:
library(lubridate)
Sys.time() + seconds(24752.05)
或从午夜开始:
as.Date(Sys.time()) + seconds(24752.05)
答案 2 :(得分:3)
另一种选择:
format(as.POSIXct('1900-1-1') + 24752.05, '%H:%M:%S')
# [1] "6:52:32"
答案 3 :(得分:3)
当然,您可以直接计算小时,分钟和秒。这是基于POSIX时间的定义。午夜总是有time_t
值,可以被86400
整除。
x <- 24752.05
paste(sprintf("%02d", floor(x / 3600)),
sprintf("%02d", floor(x %% 3600 / 60)),
sprintf("%02d", floor(x %% 60 )),
sep=":"
)
## [1] "06:52:32"