문제 풀이 : 날짜와 시간

2998 단어 jsjs

만으로 계산한 나이를 구하는 함수인 getWesternAge 함수를 구현.

조건

  • 이 함수는 birthday 라는 인자를 받습니다.

  • 이 birthday 는 Date 객체 입니다. birthday 라는 인자를 넣었을 때,
    현재를 기준으로 만으로 계산한 나이를 리턴 해주세요.

  • birthday 는 string이 아닌 Date 객체라는 걸 명심하세요
    예를 들어, 오늘이 2021년 7월 21일이고, birthday 값이 다음과 같다면:
    -> 1990-03-21T00:45:06.562Z

  • 리턴 값은 31 이 되어야 합니다.

1. 최종 코드

function getWesternAge(birthday) {
let today = new Date();
let birthDay = new Date(birthday);
let age = today.getFullYear() - birthDay.getFullYear();
//조건이 맞으면 age가 내려가게 해주면 된다.
nowMonth = today.getMonth()+1;
birthMonth = birthDay.getMonth()+1;
let month = nowMonth - birthMonth;

if(nowMonth > birthMonth || month === 0){//생일을 지났거나, 같은 날이라면
  age;
} else {
  age--;
}
return age;
}

console.log(getWesternAge('1990-03-21T00:45:06.562Z'));

2. 문제 풀이

  1. 최종적으로는 나이를 구해야 하니 올 해 연도와 주어진 인자를 이용한 연도를
    구해 빼주면 현재의 나이가 나온다.

let today = new Date();
let birthDay = new Date(birthday);
let age = today.getFullYear() - birthDay.getFullYear();


2. 변수 age에 -1 을 해주면 끝!














은 훼이크다. 이렇게 쉽게 끝나지 않는다.

현재를 기준으로 만으로 계산한 나이를 구해야 한다.

만 나이라는 게 정해진 생일이 되거나, 생일을 지나야
원래 나이의 +1을 해주는 건데 이 조건을 충족시켜줘야
만 나이를 구할 수 있다.

( 한국도 만 나이를 적용하면 좋으련만.. 그럼 내 나이도 어려지고 좋은데 )


  1. 만 나이를 구하기 위해선 year 말고도 month와 date가 필요하다.
    여기서 난 month 값으로만 만 나이를 구할거지만, 세부적으로 만 나이를
    구하려면 date 값 까지 구해서 사용해줘야 한다.

let nowMonth = today.getMonth() +1;
let birthMonth = birthDay.getMonth() +1;
let month = nowMonth - birthMonth;

문제를 풀던 중 특이한 점을 발견했다.
바로 getMonth()이다.
날짜를 구하는 다른 get 메서드들과 다르게
+1을 해줘야 정상 날짜로 출력되기 때문이다.

ex)참고로 오늘은 21년 10월 10일이다.
let today = new Date();
let todayMonth = today.getMonth();
// 지금 todayMonth는 9로 나온다.
+ 1 을 안해주면 전 달만 계속 나올거다.
그러니까 getMonth()에는 항상 +1을 해줘야 한다는 사실 잊지 말자.




4. 만 나이에 해당하는 조건이면 기존 나이를 반환하고,
만 나이에 해당이 안되면 나이를 한 살 까주면 된다.

if(nowMonth > pastMmonth || month === 0) {
return age;
} else {
return age-1; or age--;// 이건 자기 스타일대로 고르면 된다.

  1. 코드 합-체
function getWesternAge(birthday) {
let today = new Date();
let birthDay = new Date(birthday);
let age =  today.getFullYear() - birthDay.getFullYear();
let nowMonth = today.getMonth() +1;
let birthMonth = birthDay.getMonth() +1;
let month = nowMonth - birthMonth;

if(nowMonth > pastMmonth || month === 0) {
return age;
} else {
return age-1; or age--;
}
return age;
}

좋은 웹페이지 즐겨찾기