我们可以使用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()方法向下取整,把小数部分给舍去,得到整数的结果。