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;
}
添加回答
舉報