packagesutilsdatecalculateAge

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. 기본 계산

    • 생일이 지난 경우: (기준 연도 - 출생 연도)
    • 생일이 지나지 않은 경우: (기준 연도 - 출생 연도) - 1
  2. 특수 케이스

    • 기준일과 생년월일이 동일한 경우: 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 (미래 날짜)

주의사항

  1. 시간대 처리

    • UTC 기준으로 계산되므로 로컬 시간대의 영향을 받지 않습니다.
    • 시/분/초까지 정확하게 고려되어 계산됩니다.
  2. 입력값

    • targetstandard 모두 유효한 Date 객체여야 합니다.
    • standard는 선택적 매개변수로, 기본값은 현재 시각입니다.
  3. 결과값

    • 음수 값이 반환될 수 있습니다 (미래 날짜의 경우).
    • 소수점 없는 정수로 반환됩니다.