R 为什么 POSIXlt 之间的差异有小数部分?

R why does difference between POSIXlt has a decimal part?

为什么 POSIXlt 之间的差异有小数部分而 Date 之间的差异没有?

示例:

as.POSIXlt("2015-12-10",format = "%Y-%m-%d")-as.POSIXlt("2015-10-07",format = "%Y-%m-%d")

returns 64.04167

as.Date("2015-12-10",format = "%Y-%m-%d")-as.Date("2015-10-07",format = "%Y-%m-%d")

returns 64(正确值)

为什么会有不同的行为?

这些小数正好是一小时,发生在夏令时转换期间。

0.04167 * 24
#[1] 1.00008
#some rounding error

指定一个没有夏令时的时区,你会得到这个:

as.POSIXlt("2015-12-10",format = "%Y-%m-%d", tz = "GMT")-
  as.POSIXlt("2015-10-07",format = "%Y-%m-%d", tz = "GMT")
#Time difference of 64 days