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

“difftime”中可能存在错误-计算R中的日期时间差,r,dst,date-arithmetic,posixct,difftime,R,Dst,Date Arithmetic,Posixct,Difftime,我正在使用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") 我知道这是错误的,因为t1和t2都有相同的time值,

我正在使用
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") 
我知道这是错误的,因为
t1
t2
都有相同的
time
值,所以它们应该用24小时的精确倍数分开(即,正确答案是2496小时,而不是2497小时-也可以通过excel、google sheets等其他工具确认)


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

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

您可以通过将
作为.POSIXct(…,tz='UTC')
来修改它,不管它应该是什么时区;UTC将使事情变得明确,并避免DST更改

如果要修改所有
as.POSIXct()
调用的默认时区,请参阅,建议:

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

由于2005年10月30日星期日02:00:00的夏令时转换,您增加了一个小时。您可以看到2005年10月29日和10月30日之间的差异是25小时/2005@smci这是正确的。使用
tz=“UTC”
可以解决问题。这不一定是错误的,这取决于应该是哪个时区。但是UTC使事情变得明确了。@smci,谢谢!这是我代码中的一个微妙错误!!相关报道:有。这可能是复制品
Time difference of 2497 hours