2 回答

TA贡献1810条经验 获得超5个赞
你的解决方案还不错。它提出了一个小的修改,使用@edu 提到的时刻和方法差异(考虑到闰年)库。
const today = moment()
const birth = moment([1997, 9, 16])
const getRealAge = (birth,today) => today.diff(birth,'year')
// test
console.log( getRealAge(birth,today))

TA贡献1871条经验 获得超8个赞
我稍微更改了变量名,因为我没有看到这里需要使用大写字母。我也试图使代码尽可能地可读。
您的解决方案的问题是它可能不太精确,很难以这种方式考虑闰年。
export const getRealAge = (year, month, date) => {
const today = new Date();
const birthday = new Date(year, month, date);
let age = today.getFullYear() - birthday.getFullYear();
const monthsDiff = today.getMonth() - birthday.getMonth();
const turnsThisMonth = monthsDiff === 0;
const turnsAtLaterMonth = monthsDiff < 0;
if(turnsAtLaterMonth) {
age--;
} else if (turnsThisMonth){
if (today.getDate() < birthday.getDate()) {
age--;
}
}
return age;
}
添加回答
举报