2 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊
你的解決方案還不錯(cuò)。它提出了一個(gè)小的修改,使用@edu 提到的時(shí)刻和方法差異(考慮到閏年)庫(kù)。
const today = moment()
const birth = moment([1997, 9, 16])
const getRealAge = (birth,today) => today.diff(birth,'year')
// test
console.log( getRealAge(birth,today))

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊
我稍微更改了變量名,因?yàn)槲覜](méi)有看到這里需要使用大寫(xiě)字母。我也試圖使代碼盡可能地可讀。
您的解決方案的問(wèn)題是它可能不太精確,很難以這種方式考慮閏年。
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;
}
添加回答
舉報(bào)