亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 JavaScript 中根據我的生日獲取 REAL_AGE

在 JavaScript 中根據我的生日獲取 REAL_AGE

牛魔王的故事 2022-05-26 17:56:04
我寫了一個有效的函數,但我認為它可以寫得更好。  export const getRealAge = () => {      const today = new Date()      const DATE_OF_BIRTH = new Date(1997, 9, 16)      const ONE_DAY = 1000 * 60 * 60 * 24      const REAL_AGE = Math.round(        Math.abs((today - DATE_OF_BIRTH) / (ONE_DAY * 365))      )      return REAL_AGE    }
查看完整描述

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))


查看完整回答
反對 回復 2022-05-26
?
ITMISS

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;

}


查看完整回答
反對 回復 2022-05-26
  • 2 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號