TIL 28 | JavaScript replit 21. 날짜와 시간

ym j·2021년 4월 16일
0

JavaScript

목록 보기
3/7
post-thumbnail

JavaScript replit 21

Assignment

미국을 비롯해 전세계 대부분의 나라들이 생일을 기준으로 나이를 계산 합니다. 쉽게 말해 미국은 태어나자마자 0살이고 생일을 지나야 비로소 한 살이 됩니다. 반면에 한국은 태어나자마자 1살이고 연도가 바뀔 때마다 한 살씩 먹습니다.
예를 들어 미국에서는 1995년 9월 12일에 태어났으면 1995년 9월 12일에는 0살이고 1996년 9월 12일이 되야 1살이 됩니다. 그에 비해 한국에서는 1995년 9월 12일에 태어나자마자 1살이고 1996년 1월 1일에 2살이 됩니다.
1살 차이도 크게 생각하는 우리나라 고유의 문화에 비롯한 계산법이 아닌가 추측해 봅니다. 미국이나 다른 나라가 사용하는 나이 계산법은 우리나라에서는 만 나이 라고 하죠.

앞서 말한 만으로 계산한 나이를 구하는 함수인 getWesternAge 함수를 구현해 봅시다.

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


Code

function getWesternAge(birthday) {
  //현재 날짜 구하기
  const current = new Date();
  const currYear = current.getFullYear(); //현재 년도
  const currMonth = current.getMonth() + 1; // 현재 월 , 현재 날짜는 '-1'되서 나오므로 +1을 해줬다.
  const currDate = current.getDate(); // 현재 일
  //생일 날짜 구하기
  const birth = new Date(birthday);
  const birthYear = birthday.getFullYear(); // 생일 년도
  const birthMonth = birthday.getMonth(); // 생일 월
  const birthDate = birthday.getDate(); // 생일 일
  //나이
  const age = currYear - birthYear;
  if (
    birthMonth > currMonth || // 생일 month가 현재 month보다 앞서간 경우
    (birthMonth === currMonth && birthDate > currDate) // month는 같고, 생일date가 현재    date를 앞서간 경우
  ) {
    return age - 1;
  } else {
    return age;
  }
}

✔ 2틀 동안 붙잡던 replit이었다. 코드를 짜면서 크게 느낀 점은.... console.log무조건 X 1000000, 필수로 X 1000000 확인하는 습관을 가지도록 하자....

profile
블로그를 이전하였습니다 => "https://jymini.tistory.com"

0개의 댓글