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

R How to convert milliseconds from origin to date and keep the 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

这很好,但似乎必须有更好的方法。

我不太确定你在问什么。

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"。但是,您可以在打印 POSIXct 对象时指定 format 字符串。