상황
펫 정보를 보여주는 페이지에서 강아지 생일을 단지 몇 살이 아니라 ~년 ~개월
로 표기해야 해야 했다.
윤년, 윤달 계산이 복잡해서 빠르게 구현 가능하기 위해 라이브러리를 선택했고,
moment.js를 활용해 날짜 차이를 계산하기로 했다.
해결
moment.js는 javascript에서 날짜 및 시간을 조작하고 작업하는데 도움이 되는 라이브러리이다. 하지만, 현재는 용량 문제와 너무 오래되어 신규 기능 추가가 어려워 개발이 중단되었다고 한다.
moment.js 이외에도 Luxon.js
, Day.js
, date-fns.js
등 여러 가지가 존재한다.
diff()
diff()
함수를 사용하여 두 날짜의 차이를 구할 수 있다.
getMonthDiff(date1, date2) {
const petBirth = moment(date1)
const nowDate = moment(date2)
const monthDiff = nowDate.diff(petBirth, 'months')
const yearDiff = parseInt(String(monthDiff / 12))
const diff = monthDiff - 12 * yearDiff
return monthDiff > 12 ? `${yearDiff}년 ${diff}개월` : `${diff}개월`
},
<div class="input">
{{ pet.birthDay }}
<br />
<span>(
{{ getMonthDiff(pet.birthDay, new Date()) }}
)</span>
</div>