今天对接完成百度身份证号识别相关API后,需要从身份中的出生年月日业获取其年龄,封装如下方法。
实现代码:ageValue()接受一个出生字符串
export function ageValue(val) {
// 新建日期对象
let date = new Date()
// 今天日期,数组,同 birthday
let birthdayDate = new Date(val)
let birthday = [birthdayDate.getFullYear(), birthdayDate.getMonth(), birthdayDate.getDate()]
let today = [date.getFullYear(), date.getMonth() + 1, date.getDate()]
// 分别计算年月日差值
let age = today.map((value, index) => {
return value - 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
}
return {age:age[0],month:age[1],day:age[2]}
}
使用时,传入出生年月字符串:"1946-10-17"