如何在 R 中转换 unix 时间戳(毫秒)和时区?
How to convert unix timestamp (milliseconds) and timezone in R?
我的数据有两列 time
和 timezone
,它们具有事件的时间戳。例子是:
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
之前添加 time
和 timezone
列。您还应该将 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"
我的数据有两列 time
和 timezone
,它们具有事件的时间戳。例子是:
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
之前添加 time
和 timezone
列。您还应该将 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"