亚秒级日期时间到数字

Subsecond datetimes to numeric

将亚秒 POSIXct(即小数秒)类型转换为数字的最简单方法是什么?

考虑:

options(digits.secs = 3)
z <- 1579598122120
dttm <- as.POSIXct((z + 0.1)/1000, origin = "1970-01-01") # avoid rounding down: milliseconds are not exactly representable
print(dttm)
#[1] "2020-01-21 10:15:22.120 CET"

dttm 开始,我如何最好地恢复 z

我原以为以下内容会简单地给出自纪元以来的小数秒数:

as.numeric(dttm)
[1] 1579598122

网上搜索和阅读文档似乎只给了我一个反问题的解决方案。我目前最好的解决方案是笨拙的,涉及与上面粘贴在一起的 format(dttm, "%OS3") 的字符串操作。

我似乎无法用 str(dttm)unclass(dttm) 分解对象并从那里恢复值。同样 as.double(dttm) 不起作用。

如评论中所述,这只是数字的印刷问题:

print(as.numeric(dttm), digits = 14)
#[1] 1579598122.1201

我的失误。