🎂 자바스크립트로 나이 계산하는 3가지 방법

2025. 4. 16. 10:02·Programing/javascript
반응형

웹 개발을 하다 보면 사용자의 생년월일로 나이를 계산해야 하는 경우가 자주 생깁니다. 예를 들어 회원가입 시 나이 제한을 두거나, 생일을 기준으로 혜택을 주는 이벤트 등을 만들 때 꼭 필요한 기능이죠.

이 글에서는 자바스크립트를 사용해서 생년월일로 나이를 계산하는 3가지 방법을 소개하고, 만 나이 계산 팁까지 함께 알려드립니다.


✅ 방법 1: 기본적인 연도 차이 계산

function getAge(birthYear) {
  const currentYear = new Date().getFullYear();
  return currentYear - birthYear;
}

console.log(getAge(2000)); // 출력: 25 (2025년 기준)

🔸 단점: 생일이 지나지 않은 경우까지 포함해서 정확한 만 나이는 아님.


✅ 방법 2: 생일 기준으로 만 나이 계산

function getFullAge(birthDateStr) {
  const today = new Date();
  const birthDate = new Date(birthDateStr); // 'YYYY-MM-DD'

  let age = today.getFullYear() - birthDate.getFullYear();
  const isBeforeBirthday =
    today.getMonth() < birthDate.getMonth() ||
    (today.getMonth() === birthDate.getMonth() && today.getDate() < birthDate.getDate());

  if (isBeforeBirthday) {
    age--;
  }

  return age;
}

console.log(getFullAge("2000-04-20")); // 오늘이 4월 16일이면 출력: 24

✅ 정확한 만 나이 계산이 필요한 경우 가장 많이 사용되는 방식입니다.


✅ 방법 3: 주민등록번호로 나이 계산 (한국형 로직)

function getKoreanAge(ssn, todayStr = null) {
  const today = todayStr ? new Date(todayStr) : new Date();
  const yearPrefix = { '1': 1900, '2': 1900, '3': 2000, '4': 2000 };
  const [birthPart, genderPart] = ssn.split('-'); // 예: '900101-1'

  const year = yearPrefix[genderPart[0]] + parseInt(birthPart.slice(0, 2), 10);
  const month = parseInt(birthPart.slice(2, 4), 10) - 1;
  const day = parseInt(birthPart.slice(4, 6), 10);

  const birthDate = new Date(year, month, day);
  return getFullAge(birthDate.toISOString().split('T')[0]); // 만 나이
}

console.log(getKoreanAge("900101-1")); // 2025년 기준: 35

⚠️ 주민번호 방식은 서버에서만 사용 권장! 클라이언트에선 개인정보보호 주의


💡 번외: 한국식 나이 계산 (세는 나이)

function getKoreanTraditionalAge(birthYear) {
  const currentYear = new Date().getFullYear();
  return currentYear - birthYear + 1;
}

🧾 마무리

나이 계산은 간단한 듯하면서도 "만 나이"나 "세는 나이", "생일 기준" 등 고려할 점이 많습니다. 특히 국가별 문화 차이에 따라 계산 방식이 달라질 수 있으므로, 정확한 규칙에 맞게 구현하는 것이 중요합니다.

반응형

'Programing > javascript' 카테고리의 다른 글

자바스크립트의 Creational 패턴: 객체 생성의 정석  (0) 2025.04.19
💻 숫자를 한글 숫자 표기로 변환  (1) 2025.04.18
💰 숫자를 한글로 금액 단위로 표현  (0) 2025.04.18
📷 JavaScript로 이미지 리사이징 후 PHP로 업로드하는 방법  (1) 2025.04.16
JavaScript로 URL 파라미터 업데이트하는 방법  (0) 2025.04.16
javascript array sort(나이순 정렬)  (0) 2023.09.19
jQuery 이름이 비슷한 여러 요소 한번에 선택(like selector for jquery)  (0) 2023.09.19
jQuery css 애니메이션 반복/초기화(removeclass, addclass)  (0) 2023.09.19
'Programing/javascript' 카테고리의 다른 글
  • 💰 숫자를 한글로 금액 단위로 표현
  • 📷 JavaScript로 이미지 리사이징 후 PHP로 업로드하는 방법
  • JavaScript로 URL 파라미터 업데이트하는 방법
  • javascript array sort(나이순 정렬)
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (461) N
      • 금융 (61)
      • Programing (9) N
        • Algorithm (39) N
        • API (2)
        • javascript (121)
        • CSS (8) N
        • HTML (10)
        • PHP (15)
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (17)
        • MS-SQL (1)
        • MySQL (12)
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (5)
      • IT 일반 (15)
      • 리뷰 (1) N
        • Book (17)
        • 제품 (2)
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (31)
        • 회고 (2)
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    SQL
    사고 싶은 책
    iT's MY LiFE
    IT 관련
    디자인패턴
    IT·컴퓨터
    블로그
    자바스크립트유틸
    읽고 싶은 책
    위시리스트
    Java
    jsp
    자바
    JavaScript
    js패턴
    자바스크립트
    기초
    IT블로그
    php
    It
  • hELLO· Designed By정상우.v4.10.3
Dongkkase
🎂 자바스크립트로 나이 계산하는 3가지 방법
상단으로

티스토리툴바