js实现年月加减月份的计算(纯原生实现当前年月n月前和n月后的年月)

678 阅读1分钟
1.话不多说,当遇到需求:让你计算某一年月的n月之前或者n月之后(也就是yyyy-mm + n)时,不用插件,你是否一头雾水,无从下手。基于自身开发总结,为你提供一种实现该需求的解决方法。
    /*
      计算年月加减月份
      originalYtd为String,格式为"yyyy-MM"
      monthNum为Number,格式为n,n为正数表示加月份,为负数表示减月份
    */
    
    function calcMonths(originalYtd, monthNum) {
      let arr = originalYtd.split('-');
      let year = parseInt(arr[0]);
      let month = parseInt(arr[1]);
      month = month + monthNum;
      if (month > 12) {
        let yearNum = parseInt((month - 1) / 12);
        month = month % 12 == 0 ? 12 : month % 12;
        year += yearNum;
      } else if (month <= 0) {
        month = Math.abs(month);
        let yearNum = parseInt((month + 12) / 12);
        let n = month % 12;
        if (n == 0) {
          year -= yearNum;
          month = 12
        } else {
          year -= yearNum;
          month = Math.abs(12 - n)
        }

      }
      month = month < 10 ? "0" + month : month;
      return year + "-" + month;
    }

image.png

2.当然,除了以上纯原生js实现外,moment.js插件官网传送门是实际开发中使用频率和效率较高的一种处理方式。之前的文章也教学了其在vue中的使用和总结了近二十余种常见的日期处理。 一分钟让你彻底学会日期时间插件moment.js的使用和常用格式总结
3.以上就是本文内容,码字不易,还请大佬们多多三连指教。