5

有一篇文章显示了如何使用lubridate从午夜开始到几秒。从午夜开始的几秒到一天中的某个时间怎么样?

那么,我如何使用 24752.05 来获取 06:52:32,而不是使用 06:52:32 来获取 24752.05?

4

4 回答 4

8

使用as.POSIXct()午夜时间戳和偏移量的总和,可能通过设置 TZ 进行调整。

在我的默认时区:

R> as.POSIXct(trunc(Sys.time(), units="days") + 24752.05)
[1] "2013-01-16 06:52:32.04 CST"
R> 

请注意,答案(就像前面的问题一样)可以在基础 R 中很好地解决,一直有传言说每次问题都必须涉及 lubridate 而不是承受。

于 2013-01-16T22:34:19.390 回答
4

另外的选择:

format(as.POSIXct('1900-1-1') + 24752.05, '%H:%M:%S')
# [1] "6:52:32"
于 2013-01-16T22:39:30.510 回答
3

lubridate用于多样性:

library(lubridate)

Sys.time() + seconds(24752.05)

或从午夜开始:

as.Date(Sys.time()) + seconds(24752.05)
于 2013-01-16T22:36:30.620 回答
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"
于 2013-01-16T23:17:26.733 回答