如何以天为单位获取 JS 中的日期差异(不考虑小时差异)

时间:2021-07-20 09:34:39

标签: javascript date datetime

很抱歉,如果问题重复,但我在这里找不到关于我的案例的任何内容。 我得到了一个函数 getDaysDiff,其中我传递了两个参数 (startDate, endDate),它们是日期字符串,并期望以天为单位获得两个日期之间的差异,但有一些细节。 像这样:

  1. 如果我通过 '2021-07-19T23:59:59''2021-07-20T00:00:01',我想获得 1 天 作为返回值,因为即使小时数小于 24,日期也不同< /li>
  2. 对于两个日期相近但小时数超过24的情况一样,比如'2021-07-19T00:00:01''2021-07-20T23:59:59',在这种情况下,我还是想得到1天
  3. 最后,它应该适用于不同月份的相邻日期,例如 '2021-07-30T23:59:59''2021-08-01T00:00:01' 也应该返回 1 天

我尝试应用以下函数,但多亏了 Math.round/floor/ceil,它在上述情况之一中无论如何都会中断。

function getDaysDiff(start, end) {
  const date1 = new Date(start);
  const date2 = new Date(end);

  const oneDay = 1000 * 60 * 60 * 24;

  const diffInTime = date2.getTime() - date1.getTime();

  const diffInDays = Math.ceil(diffInTime / oneDay);

  return diffInDays;
}

console.log(getDaysDiff('2021-07-19T23:59:59', '2021-07-20T00:00:01'));
console.log(getDaysDiff('2021-07-19T00:00:01', '2021-07-20T23:59:59'));
console.log(getDaysDiff('2021-07-31T23:59:59', '2021-08-01T00:00:01'));

有没有办法获得这种差异?

0 个答案:

没有答案