【问题标题】:Get number of days, months and weeks since Epoch in R获取自 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

【问题讨论】:

  • 我认为最好的方法是获取interval
  • 能否给个示例代码。

标签: r epoch


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    "Date" 类的内部表示是自 Epoch 以来的天数。 (如果您有一个 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 &lt;- c(lt, lt).

    【讨论】:

      猜你喜欢
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      • 2014-10-01
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      相关资源
      最近更新 更多