在用户主页信息展示中,有一个需求是根据用户填写的出生日期,计算出年龄,现用Javascript写一个方法进行实现。
// 根据出生日期计算年龄
// strBirthday: 出生日期字符串 1998-12-31
// 返回结果:0:同岁;-1:表示出生日期输入错误,晚于当前日期;周岁年龄
function getAgeByBirthday(strDay) {
var arrDay = strDay.split('-')
var birthYear = +arrDay[0]
var birthMonth = +arrDay[1]
var birthDay = +arrDay[2]
var now = new Date()
var nowYear = now.getFullYear()
var nowMonth = now.getMonth() + 1
var nowDay = now.getDate()
var age = nowYear - birthYear
if (age === 0) {
return 0
}
if (age < 0) {
return -1
}
var monthDiff = nowMonth - birthMonth
if (monthDiff === 0) {
var dayDiff = nowDay - birthDay
if (dayDiff < 0) {
return age - 1
}
return age
} else if (monthDiff < 0) {
return age - 1
}
return age
}
// test
getAgeByBirthday('1998-12-31') // 25,当前日期为2024-05-30
上面的getAgeByBirthday
方法接收一个参数strDay
为字符串类型的出生日期,主要是对两个日期的年月日一一分别进行比较计算,方法返回周岁年龄,如果传入的日期晚于当前日期则返回-1
,请自行进行错误提示处理。