Carrot
Front-end/JavaScript

[Moment.js] Moment.js를 이용한 날짜 계산

NaDuck 2024. 1. 30. 14:25

최신 업데이트: 2024. 01. 30

 

https://momentjs.com/

 

현재 시각 구하기

moment()

const now = moment();

console.log(now.toLocaleString()); // Tue Jan 30 2024 13:58:30 GMT+0900

 

 

특정 날짜를 Moment 객체로 만들기

moment('YYYY-MM-DD')

날짜 문자열을 파라미터로 전달한다. 이때 Moment.js에 지원되는 여러 문자열 포맷이 있는데, 여기를 참고한다.

const myDate = moment('2024-01-01')

console.log(myDate.toLocaleString()); // Mon Jan 01 2024 00:00:00 GMT+0900

 

 

특정 시각보다 먼저인지 뒤인지 알아내기

moment.isBefore(moment), moment.isAfter(moment)

const date1 = moment('2024-01-01')
const date2 = moment('2024-01-02')

console.log(date1.isAfter(date2)) // false
console.log(date1.isBefore(date2)) // true

 

 

특정 날짜 시간 이전/이후 구하기

moment.subtract(), moment.add()

예를 들어, 현재 시각을 기준으로 90일 이전/이후 시각을 구하고 싶다면 다음과 같다.

const now = moment();

// 1. 90일 이전
const before90Days = now.clone().subtract(90, 'days'); // Wed Nov 01 2023 14:18:57 GMT+0900

// 2. 90일 이후
const after90Days = now.clone().add(90, 'days'); // Mon Apr 29 2024 14:18:57 GMT+0900

✅ 주의할 점은 subtract/add를 적용하는 moment 객체도 함께 변하기 때문에, 원본 moment를 유지하려면 moment.clone() 또는 새로운 Moment 객체를 생성해서 사용한다.

const now = moment();

// ❌
// 90일 이전
const before90Days = now.subtract(90, 'days');

console.log(now.toLocaleString()); // Wed Nov 01 2023 14:22:11
console.log(before90Days.toLocaleString()) // Wed Nov 01 2023 14:22:11

// ✅
// 90일 이전
const before90Days = now.clone().subtract(90, 'days');

console.log(now.toLocaleString()); // Tue Jan 30 2024 14:22:11
console.log(before90Days.toLocaleString()) // Wed Nov 01 2023 14:22:11