[JavaScript] birthdate 계산방법

2022. 9. 23. 09:35CodingTest/JavaScript Q

문제)만으로 계산한 나이를 구하는 함수인 getWesternAge 함수를 구현해 봅시다.

  • 이 함수는 birthday 라는 인자를 받습니다.
  •  birthday  Date 객체 입니다. birthday 라는 인자를 넣었을 때, 현재를 기준으로 만으로 계산한 나이를 리턴 해주세요.
  • birthday 는 string이 아닌 Date 객체라는 걸 명심하세요 :)
  • 예를 들어, 오늘이 2020년 7월 21일이고, birthday 값이 다음과 같다면:리턴 값은 30 이 되어야 합니다.
  • 1990-03-21T00:45:06.562Z
  • 리턴 값은 현재 나이가 반환 되어야 합니다.

function getWesternAge(birthday) {
  let todate = new Date();
  let age = todate.getFullYear()-birthday.getFullYear();
  let toMonth = todate.getMonth()-birthday.getMonth();
  if (toMonth < 0 || (toMonth = 0 && todate.getDate()<birthday.getDate()) ){
    age--;
  }
  return age;
}
const birthday = new Date('1990-03-21');
console.log(getWesternAge(birthday)); 
module.exports = {getWesternAge};​
 현재 Date를 가져옵니다.
 let todate = new Date();
현재 Date에서 생일을 뺀 나머값이 나이가 되는데
let age = todate.getFullYear()-birthday.getFullYear();
let toMonth = todate.getMonth()-birthday.getMonth();​
만 나이를 구할 경우 아래 부분이 true 일 경우 나이에서 -1을 한다라는 의미이다.
toMonth가 0보다 작거나
toMonth가 0이랑 같고 todate.getDate()<birthday.getDate()이 오늘 날짜보다 생일날짜가 클 경우 true가 된다
true는 아직 생일이 지나지 않아서 만 나이로 계산할 경우 현재 나이에서 (age-- )-1을 해주다는 의미이다.
if (toMonth < 0 || (toMonth = 0 && todate.getDate()<birthday.getDate()) ){
    age--;