在 R 中获取自 Epoch 以来的天数、月数和周数

Get number of days, months and weeks since Epoch in R

在 R 中获取自大纪元以来的天数、月数和周数的最佳方法是什么?

(Java 存在解决方案:Get the number of days, weeks, and months, since Epoch in Java

我知道从纪元中获取秒数,但如何获取周数?

as.integer( Sys.time())   #.... gives number of seconds since epoch time

一种选择是使用 lubridate::interval 作为:

library(lubridate)


span <- interval(ymd_hms("1970-01-01 00:00:00"), Sys.time())

as.period(span, unit = "days")
#[1] "17622d 19H 57M 10.5912010669708S"

as.period(span, unit = "months")
#[1] "579m 0d 19H 57M 10.5912010669708S"


as.period(span, unit = "years")
#[1] "48y 3m 0d 19H 57M 10.5912010669708S"

"Date" class 的内部表示是自 Epoch 以来的天数。 (如果您有一个 POSIXct 变量,那么首先使用 as.Date 将其转换为 Date class,但要注意时区转换问题。)

now <- Sys.Date() # Date
d <- as.numeric(now) # days since Epoch

现在利用每年平均365.25天,每月平均365.25 / 12天的事实,得到大纪元以来的年月。

m <- d / (365.25 / 12) # months since Epoch
y <- d / 365.25 # years since Epoch

years/months/days

如果我们不想要年、月和日,而是想要完整的年月数 (0-11) 和天数 (0-30),则使用 POSIXlt:

lt <- as.POSIXlt(format(Sys.Date()))
with(lt, data.frame(years = year - 70, months = mon - 0, days = mday - 1))

如果 lt 是矢量,这也适用,例如lt <- c(lt, lt) .