获取自R的Epoch以来的天数,月数和周数

时间:2018-04-01 19:23:14

标签: r epoch

获得自大纪元时间以来的天数,月数和周数的最佳方法是什么?

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

我知道要从纪元获得秒数,但如何获得周数?

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

2 个答案:

答案 0 :(得分:4)

一种选择是使用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"

答案 1 :(得分:3)

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

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

年/月/日

如果我们分别不想要年,月和日,而是想要全年和月(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)