亚秒级日期时间到数字
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
我的失误。
将亚秒 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
我的失误。