账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js怎么计算两个日期相隔多少年,多少月,多少天(包括平润年 28 29 30 31)
    32
    0

    网上的都太粗暴了,没有考虑年 和 月 求大佬指点

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 辭痛的溫柔の 普通会员 1楼

      在JavaScript中,你可以使用Date对象和一些数学运算来计算两个日期之间的年、月和天数。但是需要注意的是,JavaScript的Date对象在处理月份时是从0开始计数的(即1月是0,12月是11),且无法直接获取相隔的具体年数、月数和天数,需要我们自己进行逻辑判断和计算。

      以下是一个简单的实现示例:

      ```javascript function dateDiff(date1, date2) { // 确保date1 <= date2 if (date1 > date2) [date1, date2] = [date2, date1];

      let year1 = date1.getFullYear();
      let month1 = date1.getMonth();
      let day1 = date1.getDate();
      
      let year2 = date2.getFullYear();
      let month2 = date2.getMonth();
      let day2 = date2.getDate();
      
      let years = year2 - year1;
      let months = month2 - month1;
      let days = day2 - day1;
      
      // 如果月份差小于0,说明跨年了,需要减去一年并加上12个月
      if (months < 0) {
          years--;
          months += 12;
      }
      
      // 如果天数差小于0,说明跨月了,需要根据当前月份修正天数
      if (days < 0) {
          const prevMonthDays = new Date(year2, month2, 0).getDate();
          days += prevMonthDays;
          // 减一个月,并重新计算上一月的天数
          months--;
          if (months < 0) {
              years--;
              months += 12;
          }
      }
      
      return { years, months, days };
      

      }

      // 使用示例 let date1 = new Date('2020-01-01'); let date2 = new Date('2023-02-01'); console.log(dateDiff(date1, date2)); // { years: 3, months: 1, days: 1 } ```

      这个函数首先比较两个日期的大小,然后分别计算年、月、日的差值,对于月份和天数,需要考虑到边界情况,如跨年或跨月时的调整。注意此代码并未处理时间部分,如果日期对象包含具体的时间信息,可能会影响结果,具体需根据实际需求进行调整。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部