본문 바로가기

javascript

2023년부터는 나이가 줄어든다? - 만 나이 계산하기

외국의 나이 계산 방식과 우리 나라의 나이 계산 방식이 달라서, 그 동안 우리는 '세는 나이'와 '만 나이'를 따로 계산했었습니다. 

'세는 나이'는 태어나면서부터 1살이 되고 다음에 1월1일이 되면 1살씩 증가시키는 방법으로, 지금까지 우리가 사용하던 방법입니다.  현재 연도에서 태어난 연도를 뺀 후 1을 더해서 계산했었죠.

반면 '만 나이'는 출생 직후 0살에서 시작해 생년월일을 기점으로 1년이 지날 때마다 1살씩 늘어나는 방법입니다. 공공 기관 서류에 나이를 적거나 미성년/성년을 따질 때도 이 만나이를 사용합니다.  그리고 만 나이는 대부분의 국가에서 통용되는 나이 계산법이죠. 

 

2023년 6월부터는 '세는 나이'를 없애고 '만 나이'를 사용하게 됩니다. 

누군가는 그 날부터 나이가 2살 줄어든다고도 하고, 누군가는 1살 줄어든다고도 합니다. 생년월일을 기준으로 나이를 계산하기 때문입니다.

 

우선 어떤 방식으로 만 나이를 계산하는지 알아야겠죠? 

 

1) 오늘 날짜의 연도(year)에서 생일의 연도(year)를 뺀 후 age에 저장합니다.

2) 생일이 지나지 않았다면 age에서 1살을 더 뺍니다. 여기에서, 생일이 지났는지 여부를 계산하려면

    2-1) 오늘 날짜의 월(month)이 생일의 월(month)보다 작다면, 아직 생일이 지나지 않았으므 1살을 더 뺍니다. 

    2-2) 오늘 날짜의 월(month)이 생일의 월(month)이 같다면, 이번에는 날짜를 비교합니다.

       오늘 날짜의 일(date)이 생일의 일(date)보다 작다면 아직 생일이 지나지 않았으므로 1살을 더 뺍니다.  

3) 생일이 지나지 않았다면 1)에서 계산한 age값이 나이가 됩니다.

 

위의 방식을 소스 코드로 작성하면 다음과 같습니다.

 

  <script>
    function calculateAge(birthday) { 
      const today = new Date();
      const birthDate = new Date(birthday);

      let age = today.getFullYear() - birthDate.getFullYear();
      let mDiff = today.getMonth() - birthDate.getMonth();
      let mDate = today.getDate() - birthDate.getDate();
      if (mDiff < 0 || (mDiff === 0 && mDate <= 0)) {
        age--;
      }

      return age;
    }

    let birth = prompt("생년월일을 YYYY.MM.DD 형식으로 입력해 주세요(예, 2023.02.01)");
    alert("당신은 " + calculateAge(birth) + "세입니다.");
  </script>