天数差异缺少 1 天 (javascript)?

differences in days lack of 1 days (javascript)?

我正在使用 date-fns 计算日差

import differenceInDays from "date-fns/differenceInDays";

console.log(
  differenceInDays(
    new Date("2020-08-12T07:22:03.498Z"),
    new Date("2020-08-09T09:30:20.914Z")
  )
);

答案是 2,我期待 3,因为 12-9 是 3。

怎么了? https://codesandbox.io/s/date-fns-v2-pzlex?file=/src/index.js:0-299

如果只想获取日期,请删除时区之前的时间

console.log(
  differenceInDays(
    new Date("2020-08-12"),
    new Date("2020-08-09")
  )
);

// returns 3

它应该显示给定日期之间整日的天数。 (你缺少几个小时,整整 3 天)

因此,如果您将最终日期时间更改为 new Date("2020-08-12T09:30:20.914Z")

会显示3天。

全天差异

只有全天的原因是 API 按照 DifferenceInDays

的官方文档是这样工作的

日历天数的差异

您正在寻找的是日历天数的差异,date-fns 本身就支持它,如 differenceInCalendarDays.

的文档中所示

Underwater 这个API 只是把时间剥离了,这似乎就是你要找的。

例子

import differenceInCalendarDays from "date-fns/differenceInCalendarDays";

console.log(
  differenceInCalendarDays(
    new Date("2020-08-12T07:22:03.498Z"),
    new Date("2020-08-09T09:30:20.914Z")
  )
);