我对函数" 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日,然后手动添加天数"丢失"来解决此问题,但我想知道该功能是否有问题... ?因为我刚刚更改了日期数字,所以我真的不知道自己做错了什么......
答案 0 :(得分:4)
从2016-03-27
到2016-03-28
的额外一天是0.96
的原因是由于夏令时开始:
0.96 = 23 hours / 24 hours
阅读详细讨论此问题的this R Nabble blog。
答案 1 :(得分:1)
使用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