获得自大纪元时间以来的天数,月数和周数的最佳方法是什么?
(Java存在一个解决方案:Get the number of days, weeks, and months, since Epoch in Java)
我知道要从纪元获得秒数,但如何获得周数?
as.integer( Sys.time()) #.... gives number of seconds since epoch time
答案 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)
。