연단위로 나이를 세는 경우, 만 나이, 연 나이, 세는 나이 이렇게 3가지가 나올 수가 있다. 각각 나이의 사용은 다음과 같다.
만 나이 : 법적 나이로, 법률 및 공문서 등에는 만 나이를 사용해야 한다.
연 나이 : 연도를 제외한 생일을 모를 때 사용할 수 있다. 또한 청소년 보호법 등에서, "n세가 되는 해의 1월 1일을 맞이한 사람"처럼 우회적으로 사용하기도 한다.
세는 나이 : 주로 일상 생활에서 사용하는 나이로, 연 나이에 한 살을 더한 값인 '햇수'다.
다음 함수는 2022년 4월 13일 기준으로 1970년 12월 31일생의 나이를 {age: 51, yearAge: 52, countingAge: 53}으로 반환한다.
아래 코드를 사용하면 나이 계산을 만나이, 연나이, 세는나이를 한번에 할 수 있다.
function getAge(birthdate) {
const today = new Date();
const yearDiff = today.getFullYear() - birthdate.getFullYear();
const monthDiff = today.getMonth() - birthdate.getMonth();
const dateDiff = today.getDate() - birthdate.getDate();
const isBeforeBirthDay = monthDiff < 0 || monthDiff === 0 && dateDiff < 0;
return {
age: yearDiff + (isBeforeBirthDay ? -1 : 0),
yearAge: yearDiff,
countingAge: yearDiff + 1,
}
}
반응형
'Web Programming > JavaScript & TypeScript' 카테고리의 다른 글
forEach를 사용하면 안되는 경우 (3) | 2020.07.19 |
---|---|
await의 함정, 숨은 병목을 찾자 (1) | 2020.04.28 |
[TypeScript] 옵셔널 체이닝(Optional Chaining) (0) | 2020.02.10 |
TSLint와 ESLint의 통합 (0) | 2019.04.11 |
ES6로 문자열의 바이트(Byte) 구하기 (0) | 2019.03.23 |