R 中 difftime 的结果不同于 excel 和 timeanddate.com

Results with difftime in R different from excel and timeanddate.com

t1 <- strptime("2015-02-17 12:20:00", format = "%Y-%m-%d %H:%M:%S", tz = "America/Chicago")
t2 <- strptime("2015-03-13 15:00:00", format = "%Y-%m-%d %H:%M:%S", tz = "America/Chicago")
as.numeric(abs(difftime(t1, t2, units = "mins", tz = "America/Chicago")))

上面的 return 是 34,660,而 Excel 和 http://www.timeanddate.com/date/duration.html 都是 return 34,720。由于 2015 年 3 月 8 日的夏令时,R 将 t1 识别为 CST,将 t2 识别为 CDT。我想确认 R 是正确的,而其他两个来源不是。

取决于您是否要考虑当地夏令时,或者这些时间是否是与当地轮班无关的两个时间点。 Excel 并且该站点只是计算这两个时间之间的确切差异,舍弃夏令时 - 例如R 可以通过将时区更改为 UTC 来获得相同的结果,这不遵守夏令时:

difftime(as.POSIXct("2015-03-13 15:00:00",tz="UTC"),
         as.POSIXct("2015-02-17 12:20:00",tz="UTC"), units="mins")
# Time difference of 34720 mins

如果我坐在芝加哥,拿着秒表计算酒吧里的本地时钟显示 "2015-02-17 12:20:00" 然后点击 "2015-03-13 15:00:00" 之间的分钟差,我会少算 60 分钟因为在我数数的时候时钟快了一个小时以进行夏令时。