FRONTEND/React
[ React.js ] moment.js 라이브러리 사용 : format, add, startOf, endOf, isSameOrAfter, isSameOrBefore, clone
JUNGY00N
2023. 1. 15. 23:37
이번 감정 일기장 프로젝트에 moment.js 라이브러리를 사용한 내용을 정리하고자 한다.
한국어로 사용하기
- 요일이나 시간 사용 시 영어로 뜨게 되는데, 한국어로 뜨게 하고 싶으면 따로 import 문을 추가해주면 된다.
import moment from "moment";
import "moment/locale/ko";
format 형식 지정
- 원하는 방식으로 format을 설정할 수 있어 매우 편하다.
- 아래는 프로젝트에서 사용했던 format 설정 코드들이다.
format("YYYY-MM-DDTHH:mm")
// 2023-01-15T23:00 -> datetime-local input의 형식
format("MM월 DD일 dddd") // 01월 15일 일요일
format("LT") // 오후 11:00
format("YYYY년 MM월 DD일 dddd") // 2023년 01월 15일 일요일
format("YYYY년 MM월") // 2023년 01월
날짜의 시작과 끝 구하기
- 시작 : startOf()
- 끝 : endOf()
- clone()을 쓰지 않으면 원래의 값이 바뀌어버리기 때문에 clone()의 startOf와 endOf를 구한다.
const date = moment();
console.log(date);
// Moment<2023-01-15T23:26:10+09:00>
console.log(date.clone().startOf("month"));
// Moment<2023-01-01T00:00:00+09:00>
console.log(date.clone().endOf("month"));
// Moment<2023-01-31T23:59:59+09:00>
특정 날짜가 특정 구간에 속하는 지 구하기
- isSameOrAfter() 함수와 isSameOrBefore() 함수를 사용하여 특정 구간에 속하는 지 구할 수 있다.
moment.locale("ko");
const date = moment("2023-01-15");
const start = date.clone().startOf("month");
const end = date.clone().endOf("month");
console.log(date.isSameOrAfter(start)); //true
console.log(date.isSameOrBefore(end)); //true
console.log(date.isSameOrAfter(start) && date.isSameOrBefore(end)); //true
시간 더하기 / 빼기 : add()
- 특정 날짜의 한달 전, 한달 후, 일년 후 등을 구할 때에는 add() 함수를 사용한다.
- clone()을 사용하면 원래의 값이 바뀌는 것을 막을 수 있다.
const date = moment("2023-01-15");
console.log(date.clone().add(-1, "day")); // Moment<2023-01-14T00:00:00+09:00>
console.log(date.clone().add(1, "month")); // Moment<2023-02-15T00:00:00+09:00>
console.log(date.clone().add(-1, "month")); // Moment<2022-12-15T00:00:00+09:00>
console.log(date.clone().add(1, "year")); // Moment<2024-01-15T00:00:00+09:00>