1

我正在计算两个日期时间的差异,使用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

我知道这是错误的,因为两者都t1具有t2相同的time值,因此它们应该以 24 小时的精确倍数分隔(即正确答案是 2496 小时,而不是 2497 - 也由其他工具(如 excel、google 表格)确认)。

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

4

1 回答 1

2

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

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

如果要修改所有as.POSIXct()调用的默认时区,请参阅如何更改 R 中的默认时区?,这表明:

  • [作为 R 命令]Sys.setenv(TZ='GMT')
  • [R设置文件]编辑TZ="UTC"Renviron.site
于 2018-05-20T05:58:11.907 回答