js根据出生日期计算年龄及根据年龄计算出生日期

1.根据日期算年龄

javascript 复制代码
function mymethod(birthday){
  if(birthday){
    var str = 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 curMonth = new Date(today[0], today[1], 0)
        age[1]--
        age[2] += curMonth.getDate()
    }
    // 当月数为负数时,年减 1,月数加上 12
    if (age[1] < 0) {
        age[0]--
        age[1] += 12
    }
    console.log('出生日期:' + str + "  岁数:" + age[0]+'岁'+age[1]+'月'+age[2]+'天');
  }
}
mymethod('2020-12-06') // 出生日期:2020-12-06  岁数:1岁5月18天

2.根据年龄算日期

ini 复制代码
function 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)

感谢:juejin.cn/post/710112...

相关推荐
探码科技27 分钟前
AI知识管理软件推荐:九大解决方案与企业应用
前端·ruby
编程小黑马29 分钟前
解决flutter 在控制器如controller 无法直接访问私有类方法的问题
前端
Miracle_G39 分钟前
每日一个知识点:JavaScript 箭头函数与普通函数比较
javascript
unfetteredman39 分钟前
Error: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found
前端·javascript·vite
云存储小精灵44 分钟前
Dify x 腾讯云 COS MCP:自然语言解锁智能数据处理,零代码构建 AI 新世界
前端·开源
山间板栗1 小时前
微信小程序环境变量设置方案
前端
电商API大数据接口开发Cris1 小时前
Java Spring Boot 集成淘宝 SDK:实现稳定可靠的商品信息查询服务
前端·数据挖掘·api
pepedd8641 小时前
LangChain:大模型开发框架的全方位解析与实践
前端·llm·trae
HANK1 小时前
KLineChart 绘制教程
前端·vue.js
Jerry2 小时前
Compose 利用工具加快开发速度
前端