我意识到还有其他一些与此相似的问题,但我看到的所有答案都建议将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
哪个好,但似乎必须有更好的方法。
答案 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
字符串。