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

时间:2018-05-20 05:50:17

标签: r dst date-arithmetic posixct difftime

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

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 sheet等其他工具确认。

任何想法,为什么R给我错误的结果?

1 个答案:

答案 0 :(得分:2)

由于夏令时转换(星期日10/30/2005 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