calculateAge
국제적으로 통용되는 만 나이를 계산하는 함수입니다.
Usage
import { calculateAge } from '@packages/utils';
// 기본 사용법 (현재 날짜 기준)
const age = calculateAge(new Date('1995-06-22')); // 2024년 9월 12일 기준 29세
// 특정 날짜 기준으로 계산
const ageAt2024 = calculateAge(
new Date('1995-06-22'),
new Date('2024-06-22')
); // 29
// 시/분/초까지 고려한 정확한 계산
const preciseAge = calculateAge(
new Date(Date.UTC(1995, 5, 22, 4, 30, 30)),
new Date(Date.UTC(2024, 5, 22, 4, 30, 30))
); // 29
타입 정의
function calculateAge(target: Date, standard: Date = new Date()): number;
동작 방식
-
기본 계산
- 생일이 지난 경우:
(기준 연도 - 출생 연도)
- 생일이 지나지 않은 경우:
(기준 연도 - 출생 연도) - 1
- 생일이 지난 경우:
-
특수 케이스
- 기준일과 생년월일이 동일한 경우:
0
반환 - 생년월일이 기준일보다 미래인 경우: 음수 반환
- 시/분/초까지 정확하게 계산됨
- 기준일과 생년월일이 동일한 경우:
예시 결과
// 2024-09-12 기준
calculateAge(new Date('1995-06-22')) // => 29 (생일이 지난 경우)
calculateAge(new Date('1995-10-15')) // => 28 (생일이 지나지 않은 경우)
calculateAge(new Date('2024-09-12')) // => 0 (동일한 날짜)
calculateAge(new Date('2024-09-13')) // => -1 (미래 날짜)
주의사항
-
시간대 처리
- UTC 기준으로 계산되므로 로컬 시간대의 영향을 받지 않습니다.
- 시/분/초까지 정확하게 고려되어 계산됩니다.
-
입력값
target
과standard
모두 유효한 Date 객체여야 합니다.standard
는 선택적 매개변수로, 기본값은 현재 시각입니다.
-
결과값
- 음수 값이 반환될 수 있습니다 (미래 날짜의 경우).
- 소수점 없는 정수로 반환됩니다.