140

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

我已阅读?Date,?as.Date??epoch,但似乎错过了该信息。

4

2 回答 2

247

通过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> 

编辑:几年后,我们现在可以使用任何时间包:

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

请注意所有这些在没有任何格式或来源参数的情况下是如何工作的。

于 2012-11-19T14:58:03.363 回答
29

使用library(lubridate),保存为自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数的日期和时间的数字表示可以通过 强制转换为日期as_datetime()

lubridate::as_datetime(1352068320)

[1] "2012-11-04 22:32:00 UTC"
于 2019-04-03T07:00:37.303 回答