真正准确的“两个日期相差多少天”函数

网上的方法大多是直接将两个日期取毫秒数相减
没有考虑第一天最后1秒到第2天第1秒,其实也是过了一天的情况

function dateDiff(sDate,  eDate){
   const y = Math.abs(eDate.getFullYear() - sDate.getFullYear());
   const m = Math.abs(eDate.getMonth() - sDate.getMonth());
   const d = Math.abs(eDate.getDate() - sDate.getDate());

    // 如果年月日都相等,那肯定是同一天
   if (y === 0 && m === 0 && d === 0) {
     return 0;
   } else {
   // 否则今天算一天,然后计算从明天的0点到结束的日期共经过多少个"24小时"
   // 向下取整,最后加1天,就是真正的从开始日期到结束日期过了几天
     const last = new Date(sDate.getFullYear(), sDate.getMonth(), sDate.getDate() + 1, 0, 0, 0);
     const diff = Math.floor((eDate - last)/  1000  /  60  /  60  / 24);
     return 1 + diff;
   }
 }
  • 不知道有没有BUG,个人测试没测出BUG
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值