반응형
웹 개발을 하다 보면 사용자의 생년월일로 나이를 계산해야 하는 경우가 자주 생깁니다. 예를 들어 회원가입 시 나이 제한을 두거나, 생일을 기준으로 혜택을 주는 이벤트 등을 만들 때 꼭 필요한 기능이죠.
이 글에서는 자바스크립트를 사용해서 생년월일로 나이를 계산하는 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 |