lubridate 真的记录闰秒吗?
Does lubridate really register leap seconds?
我正在查看 R 包 lubridate
。我正在比较它的功能 days()
和 ddays()
。根据维基百科和全局变量 .leap.seconds
,1997/06/30 和 1997/07/01 之间有一个闰秒。因此,我期待
ymd_hms("19970630 02:13:01", tz="GMT") + days(2) == ymd_hms("19970630 02:13:01", tz="GMT") + ddays(2)
为 FALSE,因为 days(x)
仅将天数增加 x,而 ddays(x)
将秒数增加 86400x。然而,上面的说法returns TRUE。我错过了什么?
根据 Mikael Jagan 和 Sandwichnick 的回答,我得出以下结论:
lubridate
忽略闰秒以匹配 POSIX 时间标准。因此,days()
和 ddays()
在闰秒(例如 1997 年 6 月 30 日)上提供相同的结果。
> ymd_hms("19970630 02:13:01", tz = "UTC")+ddays(2)
[1] "1997-07-02 02:13:01 UTC"
> ymd_hms("19970630 02:13:01", tz = "UTC")+days(2)
[1] "1997-07-02 02:13:01 UTC"
但是,lubridate
确实记录了夏令时,因此 days()
和 ddays()
在这种情况下确实有所不同,如下例所示:
> ymd_hms("20211030 14:45:06", tz = "Europe/Berlin")+days(1)
[1] "2021-10-31 14:45:06 CET"
> ymd_hms("20211030 14:45:06", tz = "Europe/Berlin")+ddays(1)
[1] "2021-10-31 13:45:06 CET"
我正在查看 R 包 lubridate
。我正在比较它的功能 days()
和 ddays()
。根据维基百科和全局变量 .leap.seconds
,1997/06/30 和 1997/07/01 之间有一个闰秒。因此,我期待
ymd_hms("19970630 02:13:01", tz="GMT") + days(2) == ymd_hms("19970630 02:13:01", tz="GMT") + ddays(2)
为 FALSE,因为 days(x)
仅将天数增加 x,而 ddays(x)
将秒数增加 86400x。然而,上面的说法returns TRUE。我错过了什么?
根据 Mikael Jagan 和 Sandwichnick 的回答,我得出以下结论:
lubridate
忽略闰秒以匹配 POSIX 时间标准。因此,days()
和 ddays()
在闰秒(例如 1997 年 6 月 30 日)上提供相同的结果。
> ymd_hms("19970630 02:13:01", tz = "UTC")+ddays(2)
[1] "1997-07-02 02:13:01 UTC"
> ymd_hms("19970630 02:13:01", tz = "UTC")+days(2)
[1] "1997-07-02 02:13:01 UTC"
但是,lubridate
确实记录了夏令时,因此 days()
和 ddays()
在这种情况下确实有所不同,如下例所示:
> ymd_hms("20211030 14:45:06", tz = "Europe/Berlin")+days(1)
[1] "2021-10-31 14:45:06 CET"
> ymd_hms("20211030 14:45:06", tz = "Europe/Berlin")+ddays(1)
[1] "2021-10-31 13:45:06 CET"