`difftime` 中的可能错误 - 计算 R 中日期时间的差异

Possible bug in `difftime` - calculating difference in date time in R

我正在计算两个日期时间的差异,使用 R 中的 difftime 函数并得到错误答案,这是代码

t1 <- as.POSIXct("7/18/2005 8:30:00", format = "%m/%d/%Y %H:%M:%S")
t2 <- as.POSIXct("10/30/2005 8:30:00", format = "%m/%d/%Y %H:%M:%S")
difftime(t2,t1,units = "hours") 

我得到以下答案

Time difference of 2497 hours

我知道这是错误的,因为 t1t2 具有相同的 time 值,所以它们应该以 24 小时的精确倍数分隔(即正确答案是 2496 小时,而不是 2497 - 其他工具也证实了这一点,例如 excel、google 张)。

知道为什么 R 给我错误的结果吗?

由于夏令时转换(2005 年 10 月 30 日,星期日 02:00:00),您增加了一个小时

您可以通过 as.POSIXct(..., tz = 'UTC') 对它应该是的任何时区进行修改; UTC 使事情变得明确并避免 DST 更改。

如果要修改所有 as.POSIXct() 调用的默认时区,请参阅 How to change the default time zone in R?,建议:

  • [作为 R 命令]Sys.setenv(TZ='GMT')
  • [R设置文件]编辑TZ="UTC"Renviron.site