将UNIX纪元转换为Date对象

时间:2012-11-19 14:51:53

标签: r time r-faq

我正在对均匀分布的时间序列进行绘图和执行计算。时间戳当前存储为整数,表示自UNIX纪元以来的秒数(例如1352068320),但Date对象似乎更适合绘图。我该如何进行转换?

我看过?Date?as.Date??epoch,但似乎错过了这些信息。

2 个答案:

答案 0 :(得分:193)

通过POSIXct,你想在那里设置一个TZ - 在这里你可以看到我的(芝加哥)默认值:

R> val <- 1352068320
R> as.POSIXct(val, origin="1970-01-01")
[1] "2012-11-04 22:32:00 CST"
R> as.Date(as.POSIXct(val, origin="1970-01-01"))
[1] "2012-11-05" 
R> 

编辑:几年后,我们现在可以使用anytime包:

R> library(anytime)
R> anytime(1352068320)
[1] "2012-11-04 16:32:00 CST"
R> anydate(1352068320)
[1] "2012-11-04"
R> 

注意如果没有任何格式或原点参数,所有这些都可以。

答案 1 :(得分:2)

在lubridate库中保存的日期和时间为自 1970-01-01 00:00:00 UTC。所以你可以做

    library(lubridate)
    as_datetime(1352068320)
[1] "2012-11-04 22:32:00 UTC"