private getAge = (birthDate: Date) => {
    const today = new Date();
    const age = today.getFullYear() - birthDate.getFullYear();
    const month = today.getMonth() - birthDate.getMonth();

    return month < 0 || (month === 0 && today.getDate() < birthDate.getDate()) ?
        age - 1 : age
}

기존 BankSalad Web 예적금 화면에서 사용되던 나이 계산 코드

private getAge = (birthDate: Date) => {
    return moment().diff(birthDate.format('YYYYMMDD'), 'years');
}
  • moment() : moment 날자 객체 (Default는 new Date()와 같다.)

    console.dir(moment());

2019-09-02_20-11-56.jpg

  • .diff() : Difference의 약어, 특정날자와 비교하여 차이를 return한다. 리턴 값은 (years, months, weeks, days, hours, minutes, seconds)가 있다.

YYYYMMDD 로 써준 이유는?

// 현재날자 20181230, birthDate 20161231
console.log('YYYYMMDD', moment().diff(birthDate.format('YYYYMMDD'), 'years')); // 1
console.log('YYYY', moment().diff(birthDate.format('YYYY'), 'years')); //2

현재는 Moment.js 보다 Dayjs를 선호한다.
Dayjs의 경우 Moment.js 사용법이 매우 유사한데 파일 크기가 2kb여서 Moment.js 보다 30배 정도 가볍다