1.根据日期算年龄

	mymethod(birthday){//根据日期算年龄
        if(birthday){
          birthday=birthday.split('-');
          // 新建日期对象
          let date = new Date();
          // 今天日期,数组,同 birthday
          let today = [date.getFullYear(), date.getMonth() + 1, date.getDate()];
          // 分别计算年月日差值
          let age = today.map((val, index) => {
              return val - birthday[index]
          })
          // 当天数为负数时,月减 1,天数加上月总天数
          if (age[2] < 0) {
              // 简单获取上个月总天数的方法,不会错
              let lastMonth = new Date(today[0], today[1], 0)
              age[1]--
              age[2] += lastMonth.getDate()
          }
          // 当月数为负数时,年减 1,月数加上 12
          if (age[1] < 0) {
              age[0]--
              age[1] += 12
          }
          console.log(age[0]+'岁'+age[1]+'月'+age[2]+'天');
        }
      }
      // mymethod(2020-08-08)

2.根据年龄算日期

 	 myfunction(ageYear,ageMonth,ageDay){//根据年龄算日期
        var subYear = parseInt(ageYear); 
        var subMonth = parseInt(ageMonth); 
        var subDay = parseInt(ageDay); 
        var now = new Date(); 
        var nowYear = now.getFullYear(); 
        var nowMonth = now.getMonth()+1; 
        var nowDay = now.getDate(); // 按照减法原理,先day相减,不够向month借;然后month相减,不够向year借;最后year相减。 
        var day = nowDay - subDay; 
        var month = nowMonth - subMonth; 
        var year = nowYear - subYear; // 检查是否溢出 
        if(day<=0){ // 获得上月的天数 
          var lastMonth = nowMonth - 1; 
          var lastMonthOfYear = nowYear; 
          if(lastMonth<=0){ 
            lastMonth =lastMonth + 12 //(lastMonth + 12) % 12; 
            lastMonthOfYear = lastMonthOfYear - 1;
          } 
          day = day + new Date(lastMonthOfYear, lastMonth, 0).getDate(); 
          month = month - 1; 
        } 
        if(month<=0){ 
          month =month + 12 //(month + 12) % 12; 
          year--; 
        } 
        if(month<10){
          month='0'+month
        }
        if(day<10){
          day='0'+day
        }
        console.log(year+'-'+month+'-'+day);
      }
      // myfunction(1,10,20)
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐