红枫心声社区

 找回密码
 立即注册

手机动态码快速登录

手机号快速注册登录

搜索
热搜: 活动
查看: 221|回复: 0

js方法-通过出生日期计算出当前年龄

[复制链接]

33

主题

33

帖子

219

积分

正式会员

Rank: 3Rank: 3

积分
219

活跃会员

发表于 2022-4-27 09:38:31 | 显示全部楼层 |阅读模式
/**
* 通过出生日期获取当前年龄
* @param strBirthday:指的是出生日期,格式为"1990-01-01",字符串类型
*/
function getCurrentAgeByBirthDate(strBirthday){
    // 将出生日期的字符串通过"-"分割成数组
           const strBirthdayArr = strBirthday.split("-")
           // 拿到出生日期的年
    const birthYear = strBirthdayArr[0]
    // 拿到出生日期的月
    const birthMonth = strBirthdayArr[1]
    // 拿到出生日期的日
    const birthDay = strBirthdayArr[2]
    // 创建一个时间对象
           const d = new Date()
           // 拿到当前时间的年
    const nowYear = d.getFullYear()
    // 拿到当前时间的月
    const nowMonth = d.getMonth() + 1
    // 拿到当前时间的日
    const nowDay = d.getDate()
    // 如果出生日期的年等于当前时间的年
    if(nowYear === birthYear) return 0 // 返回周岁年龄 0,并终止函数执行
    // 如果如果出生日期的年不等于于当前时间的年,则拿到年之差
    const ageDiff = nowYear - birthYear ; // 年之差
    // 如果年之差是个负数,则表示用户输入的出生日期错误,晚于今天,返回 -1,并终止函数执行
    if(ageDiff < 0) return -1 // 返回错误 -1,并终止函数执行
    // 如果年之差是个正整数,但出生日期的月与当前时间的月不相等
    if(nowMonth !== birthMonth){
            // 拿到出生日期的日与当前时间的月之差
            const monthDiff = nowMonth - birthMonth; // 月之差
            // 如果月之差是个负数,则年之差 - 1后得到周岁年龄,否则直接得到周岁年龄
            return monthDiff < 0 ? ageDiff - 1 : ageDiff  // 返回周岁年龄,并终止函数执行
    }
    // 如果出生日期的月与当前时间的月相等,则拿到出生日期的日与当前时间的日之差
    const dayDiff = nowDay - birthDay;
    // 如果日之差是个负数,则年之差 - 1得到周岁年龄,否则直接得到周岁年龄
    return dayDiff < 0 ? ageDiff - 1 : ageDiff // 返回周岁年龄,并终止函数执行
}

您需要登录后才可以回帖 登录 | 立即注册 手机动态码快速登录

本版积分规则

快速回复 返回顶部 返回列表