在 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)
.
在 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)
.