我在看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)如果是假的,因为days(x)只是将天数增加x,而ddays(x)则使秒数增加86400 x。但是,上面的语句返回TRUE。我遗漏了什么?
发布于 2022-02-03 09:24:57
在阐述Mikael Jagan和Sandwichnick的回答时,我得出以下结论:
为了与POSIX时间标准相匹配,lubridate会忽略闰秒。因此,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"https://stackoverflow.com/questions/70850677
复制相似问题