Moment는 시간을 다루기 편안한 라이브러리 입니다.
1. 여기 아주 간단한 요청이 있습니다. 현재 시간을 YYYY-MM-DD HH:mm:ss로 표현을 해달라고 합니다. 자 이걸 Date와 Moment를 비교하여 보여드리겠습니다.
const current = new Date()
console.log( getFormattedDate( current ) )
function getFormattedDate( date ) {
return `${date.getFullYear()}-${lpad( date.getMonth() + 1 )}-${lpad( date.getDate() )}`
+ ` ${lpad( date.getHours() )}:${lpad( date.getMinutes() )}:${lpad( date.getSeconds() )}`
}
function lpad( val, length = 2, char = '0' ) {
let valStr = val && val.toString() ? val.toString() : ''
for( let i = valStr.length; i < length; i++ ) {
valStr = char + valStr
}
return valStr
}
위 처럼 포맷팅 한번 하기 위해서 포매팅을 하기 위한 함수와, 한자리로 나오는 함수들을 강제로 두자리수로 만들어 주기위한 함수도 구현하여야 원하는 포매팅을 할 수 있기에 매우 불편하다.
Moment.js의 표현으로는 아래와 같다.
moment().format('YYYY-MM-DD HH:mm:ss')
위의 코드를 https://momentjs.com/ 해당 사이트에 접근하여 디버거 창에서 실행해보면 아래와 같이 포매팅된 날짜 형식을 구할 수 있다.
2. 2015년 12월 31일은 무슨요일일까? 일반 Date로는 날짜를 세팅하는 것도 매우 귀찮은 것을 알 것이다. 이것을 Moment로 표현해보자
moment('2015년 12월 31일', 'YYYY년 MM월 DD일').format('ddd')
moment('2015-12-31', 'YYYY-MM-DD').format('ddd')
moment('20151231', 'YYYYMMDD').format('ddd')
위의 코드들을 한 줄씩 디버거창에 입력을 해보면 목요일(Thu)로 표현 되는 것을 볼 수 있다. 위 처럼 이미 포매팅된 날짜형식을 입력받아서 해당 날짜에 대한 여러가지 정보를 얻을 수 있다.
3. 2015년 12월 31일과 2021년 01월 31일은 몇일, 몇주, 몇달, 몇년 차이일까?
moment('2021-01-31', 'YYYY-MM-DD').diff(moment('2015-12-31', 'YYYY-MM-DD'), 'days')
moment('2021-01-31', 'YYYY-MM-DD').diff(moment('2015-12-31', 'YYYY-MM-DD'), 'weeks')
moment('2021-01-31', 'YYYY-MM-DD').diff(moment('2015-12-31', 'YYYY-MM-DD'), 'months')
moment('2021-01-31', 'YYYY-MM-DD').diff(moment('2015-12-31', 'YYYY-MM-DD'), 'years')
위의 코드가 차이를 구하는 코드이며 결과는 아래와 같다.
이 처럼 Date로는 처리 하기 귀찮거나, 직관적이지 못한 시간에 대한 연산을 직관적이고, 간편한 함수를 제공하며, 추가적으로 다국어등의 기능들도 제공을 하니, 날짜 및 시간을 다루게 된다면 꼭 사용 해볼 것을 권장 한다.
댓글
댓글 쓰기