js输入两个日期,计算两个日期相差的天数

公路

我们可以使用javascript内置的Date对象来实现这种日期的计算,具体实现如下:

function daysBetweenDates(date1, date2) {
  const ONE_DAY = 1000 * 60 * 60 * 24; // 一天的毫秒数
  const time1 = new Date(date1).getTime();
  const time2 = new Date(date2).getTime();
  const diff = Math.abs(time1 - time2);
  return Math.floor(diff / ONE_DAY);
}

// 示例
const date1 = '2023-04-01';
const date2 = '2023-04-14';
console.log(daysBetweenDates(date1, date2)); // 输出 13

上述代码中,new Date()函数的作用就是将日期字符串转换为日期对象,然后调用getTime()方法来获取其对应的毫秒数。

如何计算出两个日期相差的天数,其实就是先计算两个日期的毫秒数之差,并通过Math.abs()函数取绝对值(防止结果是负的),然后将毫秒数之差除以一天的毫秒数,再向下取整即可得到相差的天数。

注意:为什么要向下取整呢?

因为js的Date对象返回的时间戳是以毫秒为单位的浮点数,而我们最终要的是整数(天数)。

因此,我们最终需要使用Math.floor()方法向下取整,把小数部分给舍去,得到整数的结果。