为什么 R 向日期时间对象添加不存在的微秒/纳秒?

问题描述

我有格式 "%d-%b-%Y %H:%M:%s.%OS" 的日期时间, 例如"25-Apr-2021 18:31:56.234", 那就是毫秒的精度。 当解析到时间对象时,我看到值不一样,有时它会增加 1 微秒或减少它,或者类似的事情。 为什么会这样,该怎么办? 我想要一个正好是 56 秒和 234 毫秒的时间对象! (如果需要增加更高的精度,则在此之后归零

例如,当我调用 print(as.numeric(),digits=20) 命令时它打印的一些值:"1615310444.7509999 1615310442.5550001", 或者当我要求某些 2 个值之间的差异时,它给出:例如 "Time difference of 0.003999949 secs"

解决方法

您可以使用 options(digits.secs) 来显示毫秒。下面是一个例子。 digits.secs 必须设置为零。另请注意,您应该更改日期的格式

> dp <- options(digits.secs=0)
> dp
$digits.secs
[1] 0

> strptime("25-Apr-2021 18:31:56.234",format = "%d-%b-%Y %H:%M:%OS")
[1] "2021-04-25 18:31:56 +08"
> dp <- options(digits.secs=3)
> dp
$digits.secs
[1] 0

> strptime("25-Apr-2021 18:31:56.234",format = "%d-%b-%Y %H:%M:%OS")
[1] "2021-04-25 18:31:56.234 +08"