返回年龄(年或月)

132 阅读1分钟

根据总月数获取年龄

export const getAgeTxt = (value: string | number = 0) => {
    return Number(value) < 12 ? value + '月' : parseInt((Number(value) / 12).toString()) + '岁'
}

根据年-月-日 获取年龄

//根据年-月-日 获取年龄
export function getAge(strBirthday: string) {
    let returnAge
    let returnAgeTxt
    let strBirthdayArr = strBirthday.split('-')
    let birthYear = strBirthdayArr[0]
    let birthMonth = strBirthdayArr[1]
    let birthDay = strBirthdayArr[2]

    let d = new Date()
    let nowYear = d.getFullYear()
    let nowMonth = d.getMonth() + 1
    let nowDay = d.getDate()

    if (Number(nowYear) === Number(birthYear)) {
        returnAge = 0 //同年 则为0岁
        //返回月
        returnAgeTxt = [12 - Number(birthMonth), '月']
    } else {
        let ageDiff = nowYear - Number(birthYear) //年之差
        if (ageDiff > 0) {
            if (Number(nowMonth) === Number(birthMonth)) {
                let dayDiff = nowDay - Number(birthDay) //日之差
                if (dayDiff < 0) {
                    returnAge = ageDiff - 1
                } else {
                    returnAge = ageDiff
                }
            } else {
                let monthDiff = nowMonth - Number(birthMonth) //月之差
                if (monthDiff < 0) {
                    returnAge = ageDiff - 1
                } else {
                    returnAge = ageDiff
                }
            }
            returnAgeTxt = [returnAge, '岁']
        } else {
            returnAge = -1 //返回-1 表示出生日期输入错误 晚于今天
            returnAgeTxt = [0, '岁']
        }
    }
    return { returnAge, returnAgeTxt } //返回周岁年龄
}

使用:

getAge(patientBirthdate).returnAgeTxt.join().replace(',', '') 

const returnAgeTxt = getAge(str).returnAgeTxt
obj.age = returnAgeTxt[0]
setAgeText(returnAgeTxt[1])