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
字符串。
我意识到还有其他几个与此类似的问题,但我看到的所有答案都建议将 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
字符串。