Moment.js란?
Moment.js는 JavaScript에서 날짜 및 시간을 조작하고 작업하는데 도움이 되는 JavaScript 라이브러리입니다. Moment.js는 JavaScript에서 날짜 및 시간과 관련된 라이브러리 중에서 가장 오래되었지만, 현재 다음 두 가지 이유로 개발이 중단되었습니다.
- Moment.js의 용량 문제
- 너무 오래되어 신규 기능 추가가 어려움
Moment.js 개발자 중 한 명은 Moment.js의 단점을 극복하기 위해 Luxon.js라는 라이브러를 만들었으며, 날짜 및 시간을 조작하는 라이브러리는 Luxon.js 외에도 Day.js, date-fns.js 등 여러 가지가 존재합니다.
Moment.js의 단점을 극복하기 위해 다른 라이브러리 사용을 권장하지만, Moment.js는 날짜 및 시간 관련 라이브러리 중 가장 오래되었고 자료가 많기 때문에 지금도 많이 사용하는 라이브러리입니다.
이번 포스팅에서는 Moment.js를 유용하게 사용하는 방법을 소개합니다.
목차
날짜 Format
2021-12-16(목) 기준입니다.
moment().format('DD/MMM/YY'); // 16/Dec/21
moment().format('DD/MM/YY'); // 16/12/21
moment().format('MM-DD-YYYY'); // 12-15-2021
moment().format('YYYY-MM-DD'); // 2021-12-16
moment().format('M'); // 12
moment().format('DDD'); // 350
moment().format('YYYY-MM-DD hh:mm:ss'); // 2021-12-16 11:28:04
moment 객체에 날짜 또는 시간 빼기
moment 객체의 substract()
함수를 사용합니다.
moment().subtract(1, 'second').format('YYYY-MM-DD hh:mm:ss');
moment().subtract(1, 'minute').format('YYYY-MM-DD hh:mm:ss');
moment().subtract(1, 'hour').format('YYYY-MM-DD hh:mm:ss');
moment().subtract(1, 'day').format('YYYY-MM-DD');
moment().subtract(1, 'month').format('YYYY-MM-DD');
moment().subtract(1, 'year').format('YYYY-MM-DD');
첫 번째 인수
moment 객체에 뺄 값을 입력합니다.
두 번째 인수
몇 초 전
's'
, 'second'
, 'seconds'
중 하나를 입력합니다.
몇 분 전
'm'
, 'minute'
, 'minutes'
중 하나를 입력합니다.
몇 시간 전
'h'
, 'hour'
, 'hours'
중 하나를 입력합니다.
며칠 전
'd'
, 'day'
, 'days'
중 하나를 입력합니다.
몇 월 전
'month'
또는 'months'
를 입력합니다.
☞ 'm'은 분(minute)의 약자입니다.
몇 년 전
'y'
, 'year'
, 'years'
중 하나를 입력합니다.
moment 객체에 날짜 또는 시간 더하기
moment 객체의 add()
함수를 사용합니다.
add()
함수의 두 번째 인수는 substract()
함수와 동일합니다.
moment().add(1, 'second').format('YYYY-MM-DD hh:mm:ss');
moment().add(1, 'minute').format('YYYY-MM-DD hh:mm:ss');
moment().add(1, 'hour').format('YYYY-MM-DD hh:mm:ss');
moment().add(1, 'day').format('YYYY-MM-DD');
moment().add(1, 'month').format('YYYY-MM-DD');
moment().add(1, 'year').format('YYYY-MM-DD');
이전 날짜인지 이후 날짜인지 체크
isAfter()
함수를 사용하여 moment 객체의 날짜가 특정 날짜 이후인지 체크하며, 시간도 체크할 수 있습니다.
moment('2021-01-15').isAfter('2021-01-01'); // true
moment('2021-01-15').isAfter('2021-01-31'); // false
moment('2021-01-15 12:00:00').isAfter('2021-01-15 12:00:01'); // false
isBefore()
함수를 사용하여 moment 객체의 날자가 특정 날짜 이전인지 체크하며, 시간도 체크할 수 있습니다.
moment('2021-01-15').isBefore('2021-01-01'); // false
moment('2021-01-15').isBefore('2021-01-31'); // true
moment('2021-01-15 12:00:00').isBefore('2021-01-15 12:00:01'); // true
두 날짜가 동일한지 체크
isSame()
함수를 사용하여 두 날짜가 동일한지 체크할 수 있습니다.
moment('2021-01-15').isSame('2021-01-01'); // false
moment('2021-01-15').isSame('2021-01-31'); // false
moment('2021-01-15 12:00:00').isSame('2021-01-15 12:00:01'); // false
moment('2021-01-15').isSame('2021-01-15'); // true
moment('2021-01-15 00:00:00').isSame('2021-01-15'); // true
moment('2021-01-15 12:00:00').isSame('2021-01-15 12:00:00'); // true
해당 월의 일수를 구하는 경우
해당 월의 일수를 구하는 경우 daysInMonth()
함수를 사용합니다.
moment('2021-01').daysInMonth(); // 31
moment('2021-01-15').daysInMonth(); // 31
moment('2021-02-15 12:00:00').daysInMonth(); // 28
moment('2020-02-15 12:00:00').daysInMonth(); // 29
2020년 2월은 윤년이므로 일수는 29입니다.
moment 객체의 시작 시간 또는 시작 날짜
startOf()
함수는 moment 객체의 시작 시간 또는 날짜를 반환합니다.
moment('2021-02-05 06:20:50').startOf('year').format('YYYY-MM-DD hh:mm:ss');
// 2021-01-01 12:00:00
moment('2021-02-05 06:20:50').startOf('month').format('YYYY-MM-DD hh:mm:ss');
// 2021-02-01 12:00:00
moment('2021-02-05 06:20:50').startOf('day').format('YYYY-MM-DD hh:mm:ss');
// 2021-02-05 12:00:00
moment('2021-02-05 06:20:50').startOf('hour').format('YYYY-MM-DD hh:mm:ss');
// 2021-02-05 06:00:00
moment('2021-02-05 06:20:50').startOf('minute').format('YYYY-MM-DD hh:mm:ss');
// 2021-02-05 06:20:00
moment('2021-02-05 06:20:50').startOf('second').format('YYYY-MM-DD hh:mm:ss');
// 2021-02-05 06:20:50
moment 객체의 마지막 시간 또는 마지막 날짜
endOf()
함수는 moment 객체의 마지막 시간 또는 날짜를 반환합니다.
moment('2021-02-05 06:20:50').endOf('year').format('YYYY-MM-DD hh:mm:ss');
// 2021-12-31 11:59:59
moment('2021-02-05 06:20:50').endOf('month').format('YYYY-MM-DD hh:mm:ss');
// 2021-02-28 11:59:59
moment('2021-02-05 06:20:50').endOf('day').format('YYYY-MM-DD hh:mm:ss');
// 2021-02-05 11:59:59
moment('2021-02-05 06:20:50').endOf('hour').format('YYYY-MM-DD hh:mm:ss');
// 2021-02-05 06:59:59
moment('2021-02-05 06:20:50').endOf('minute').format('YYYY-MM-DD hh:mm:ss');
// 2021-02-05 06:20:59
moment('2021-02-05 06:20:50').endOf('second').format('YYYY-MM-DD hh:mm:ss');
// 2021-02-05 06:20:50
moment 객체의 년, 월, 일, 시, 분, 초 가져오기
년도는 year()
또는 years()
함수를 사용합니다.
moment('2021-02-05 06:20:50').year(); // 2021
moment('2021-02-05 06:20:50').years(); // 2021
월은 month()
또는 months()
함수를 사용합니다. JavaScript에서 월은 0부터 시작이므로 + 1을 해주어야 합니다.
moment('2021-02-05 06:20:50').month() + 1; // 2
moment('2021-02-05 06:20:50').months() + 1; // 2
일은 day()
또는 days()
함수를 사용합니다.
moment('2021-02-05 06:20:50').day(); // 5
moment('2021-02-05 06:20:50').days(); // 5
시간은 hour()
또는 hours()
함수를 사용합니다.
moment('2021-02-05 06:20:50').hour(); // 6
moment('2021-02-05 06:20:50').hours(); // 6
분은 minute()
또는 minutes()
함수를 사용합니다.
moment('2021-02-05 06:20:50').minute(); // 20
moment('2021-02-05 06:20:50').minutes(); // 20
초는 second()
또는 seconds()
함수를 사용합니다.
moment('2021-02-05 06:20:50').second(); // 50
moment('2021-02-05 06:20:50').seconds(); // 50
시간 또는 날짜 차이를 계산
diff()
함수를 사용하여 시간 또는 날짜 차이를 구할 수 있습니다.
※ 계산식이 어떻게 되는지 모르겠는데, diff()
함수는 문제가 많습니다. 사용하지 않는 것을 권유합니다.
moment('2021-02-10').diff('2021-02-05', 'day'); // 5
첫 번째 인수
moment 객체와 비교할 날짜를 입력합니다.
두 번째 인수
초 비교
's'
, 'second'
, 'seconds'
중 하나를 입력합니다.
분 비교
'm'
, 'minute'
, 'minutes'
중 하나를 입력합니다.
시간 비교
'h'
, 'hour'
, 'hours'
중 하나를 입력합니다.
일 비교
'd'
, 'day'
, 'days'
중 하나를 입력합니다.
월 비교
'month'
또는 'months'
를 입력합니다.
☞ 'm'은 분(minute)의 약자입니다.
년도 비교
'y'
, 'year'
, 'years'
중 하나를 입력합니다.
'JavaScript > 라이브러리' 카테고리의 다른 글
[JavaScript]Moment.js 대신 Day.js 사용 (1) | 2021.12.17 |
---|
댓글