R "difftime" 表现出奇怪的行为

R "difftime" exhibits strange behavior

我对函数"difftime"有点困惑。当我计算到 2016 年 3 月 27 日的时差时,一切正常。但是当我尝试 2016 年 3 月 28、29、30 或 31 时,似乎出现了问题:

> difftime("2016-03-27","1979-01-01", units="days")
Time difference of 13600 days
> difftime("2016-03-28","1979-01-01", units="days")
Time difference of 13600.96 days
> difftime("2016-03-31","1979-01-01", units="days")
Time difference of 13603.96 days

我可以通过将日期设置为 2016 年 3 月 27 日然后手动添加天数来解决这个问题 "missing",但我想知道函数是否有问题...?我真的不知道我做错了什么,因为我刚刚更改了日期...

2016-03-272016-03-28 多一天的原因是 0.96 是由于夏令时开始:

0.96 = 23 hours / 24 hours

阅读 this R Nabble blog 详细讨论了这个问题。

没有问题,当你用as.Date:

转换的时候
difftime(as.Date("2016-03-28"), as.Date("1979-01-01"), units="days")

# Time difference of 13601 days

同样lubridate也没有问题:

library(lubridate)   
difftime(ymd("2016-03-28"), ymd("1979-01-01"), units="days")

# Time difference of 13601 days