`difftime` 中的可能错误 - 计算 R 中日期时间的差异
Possible bug in `difftime` - calculating difference in date time in R
我正在计算两个日期时间的差异,使用 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")
我得到以下答案
Time difference of 2497 hours
我知道这是错误的,因为 t1
和 t2
具有相同的 time
值,所以它们应该以 24 小时的精确倍数分隔(即正确答案是 2496 小时,而不是 2497 - 其他工具也证实了这一点,例如 excel、google 张)。
知道为什么 R
给我错误的结果吗?
由于夏令时转换(2005 年 10 月 30 日,星期日 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
我正在计算两个日期时间的差异,使用 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")
我得到以下答案
Time difference of 2497 hours
我知道这是错误的,因为 t1
和 t2
具有相同的 time
值,所以它们应该以 24 小时的精确倍数分隔(即正确答案是 2496 小时,而不是 2497 - 其他工具也证实了这一点,例如 excel、google 张)。
知道为什么 R
给我错误的结果吗?
由于夏令时转换(2005 年 10 月 30 日,星期日 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