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

时间:2016-07-01 13:35:57

标签: r difftime

我对函数" 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日,然后手动添加天数"丢失"来解决此问题,但我想知道该功能是否有问题... ?因为我刚刚更改了日期数字,所以我真的不知道自己做错了什么......

2 个答案:

答案 0 :(得分:4)

2016-03-272016-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