我正在计算两个日期时间的差异,使用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 sheet等其他工具确认。
任何想法,为什么R
给我错误的结果?
答案 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?,其中建议:
Sys.setenv(TZ='GMT')
或TZ="UTC"
修改为Renviron.site