代码之家  ›  专栏  ›  技术社区  ›  Luke

为什么POSIXlt的区别有小数部分?

  •  1
  • Luke  · 技术社区  · 4 年前

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

    64.04167

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

    退货 64 (正确值)

    为什么会有不同的行为?

    1 回复  |  直到 4 年前
        1
  •  3
  •   Roland    4 年前

    这些小数正好相当于一个小时,发生在从DST转换的过程中。

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

    指定一个没有DST的时区,您将得到:

    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