R如何将毫秒从原点转换为日期并保持毫秒

时间:2018-04-14 05:59:16

标签: r datetime lubridate milliseconds

我意识到还有其他一些与此相似的问题,但我看到的所有答案都建议将UNIX时间戳(以毫秒为单位)除以1000,以便R正确处理它(例如,1506378449而不是1506378448618)。

有没有办法转换它而不会潜水1000并保持这些小数秒?

到目前为止我尝试过的东西不起作用:

as.POSIXct(1506378448618, origin = "1970-01-01", tz = 
"America/Chicago", format = "%Y-%m-%d %H:%M:%OS") 

返回NA,它同样使用%OS1,2,3等。

anytime(1506378448618, tz = "America/Chicago")

as_datetime(1506378448618, tz = "America/Chicago")

两者都回到了未来的时代(“49705-03-26 12:56:58 CDT”)

我能想到的最好的答案是分割字符串并执行以下操作:

as_datetime(1506378448, tz = "America/Chicago") + .618

哪个好,但似乎必须有更好的方法。

1 个答案:

答案 0 :(得分:0)

我不完全确定你在问什么。

as.POSIXct(...)确实记录了小数秒。您可以使用相应的format字符串打印几分之一秒。

例如,打印前3位数字

t <- 1506378448618;
format(as.POSIXct(t / 1000, origin = "1970-01-01", tz = "America/Chicago"), "%H:%M:%OS3")
#[1] "17:27:28.618"

注意:as.POSIXct(..., format = "%Y-%m-%d %H:%M:%OS")导致NA的原因仅仅是因为您的输入对象1506378448618没有格式"%Y-%m-%d %H:%M:%OS"。但是,您可以在打印format对象时指定POSIXct字符串。