js计算两个日期天数

let now = new Date();
let year=now.getFullYear();
let month=now.getMonth()+1;
let date=now.getDate();
document.write("当前日期为:"+year+"年"+month+"月"+date+"日"+"<br>");//2021/3/16
//目标日期
let dateEnd = new Date(2021, 3, 18);
//把相差的毫秒数转换为天数
let  differ = parseInt(Math.abs(dateEnd - now)/1000/60/60/24);
document.write("距离目标日期还有:"+differ+"天");

差两天,为什么会显示32天

求大佬!!!

      2021-3-16    ----   2021-3-31    15天
      2021-4-1     ----   2021-4-18    17天

  // 计算时差

  DateDifference(faultDate, completeTime) {

    var stime = new Date(faultDate).getTime();

    var etime = new Date(completeTime).getTime();

    var usedTime = etime - stime; //两个时间戳相差的毫秒数

    var days = Math.floor(usedTime / (24 * 3600 * 1000));

    var time = days;

    return time;

  }

使用dayjs进行时间的计算会避免这种问题

 

let dateEnd = new Date(2021, 3, 18);dataEnd得到的是2021.4.18

 

dateEnd对应的日期其实是4月份,在js里面,new Date().getMonth()取出的月份是比实际月份小1的,所以你应该传入2来设置3月份,而不是3