如何在 R 中转换 unix 时间戳(毫秒)和时区?

How to convert unix timestamp (milliseconds) and timezone in R?

我的数据有两列 timetimezone,它们具有事件的时间戳。例子是:

time               timezone
1433848856453      10800000

信息中的时间戳似乎也有小数秒。我不明白时区格式,但它必须是等效的 unix 格式。我还需要保留小数秒。我如何从那里转到类似 R 的东西?

2015-01-01 13:34:56.45 UTC

注意:此人类可读日期不是显示的 unix 时间戳的实际转换值。

我认为这可能适合您。

aa <- 1433848856453
as.POSIXct(aa/1000, origin="1970-01-01")
[1] "2015-06-09 13:20:56.453 CEST"

编辑

现在我意识到由于我的个人设置,我的代码无法重现,但这可以解决它并让您实现目标。

options(digits.secs=6)

看起来 timezone 列是时区偏移量,以毫秒为单位。我假设这意味着时区列将手动调整夏令时

因此您应该在转换为 POSIXct 之前添加 timetimezone 列。您还应该将 tz 设置为 "UTC",这样就不会对您的 POSIXct 对象进行 DST 调整。

R> time <- 1433848856453
R> timezone <- 10800000
R> options(digits.secs=3)
R> .POSIXct((time+timezone)/1000, tz="UTC")
[1] "2015-06-09 14:20:56.453 UTC"