본문 바로가기

Language/JavaScript

[JavaScript] 만 나이 계산하기

가장 오래 걸린 만 나이 계산 문제🤤 그래도 다 풀고 나니 뿌듯하다!!

 

처음에 조건식을 한 줄로 작성하다가 조건식을 추가하면서 반환값을 맞추기 시작했다.

날짜를 이것저것 넣어 실행해보는데 어떤 날짜는 맞고 어떤 날짜는 틀리기를 반복하여 애꿎은 조건식만 계속 수정하다가

if와 else if의 조건식 자리를 서로 바꿔주었더니 해결되었다 : )

 

function getWesternAge(birthday) {
  const today = new Date();            //2023-7-13 기준
  const birth = new Date(birthday);

  const yyyy = today.getFullYear() - birth.getFullYear();

  const todayMm = today.getMonth();
  const birthMm = birth.getMonth();
  const mm = todayMm - birthMm;

  const dd = today.getDate() - birth.getDate();

  if (yyyy > 0 && todayMm <= birthMm && dd < 0) {
    return yyyy - 1;
  } else if (today > birth) {
    return yyyy;
  } else {
    return 0;
  }
}

console.log(getWesternAge('2023-1-1'))    //0
console.log(getWesternAge('2022-7-13'))   //1
console.log(getWesternAge('1992-7-14'))   //30

 

우선 정의할 값들을 생각하며 선언해주고 if문으로 명령어들을 나열하였다.

컴퓨터는 코드를 위에서부터 순서대로 실행하는 순차구조라는 것을 더 빨리 생각했더라면 시간을 단축할 수 있었을 것 같다.

 

 

 

 

 


 

 

 

Date 객체로 현재 시각을 출력하고 그 안의 함수로 날짜와 시간의 값을 나타낼 수 있다.

 

  input remarks
현재시각 const rightNow = new Date();  
연도 const year = rightNow.getFullYear();  
const month = rightNow.getMonth() + 1; 0 = 1월
const date = rightNow.getDate();  
요일 const day = rightNow.getDay(); 0 = 일요일
시간 const currentHour = rightNow.getHours(); 0~23의 시간
const currentMin = rightNow.getMinutes(); 0~59의 분
밀리초 const time = rightNow.getTime(); 1970-01-01로부터 지난 밀리초

 

 

 

특정 날짜도 반환할 수 있다.

 

input output
const date1 = new Date('December 25, 2016 01:01:00'); 2016-12-25T01:01:00.000Z
const date2 = new Date('2017-12-31T03:24:00'); 2017-12-31T03:25:00.000Z
const date3 = new Date(2018, 1, 1); 2018-02-01T00:00:00.000Z