javascript 날짜 관련 모듈

Jinsung·2022년 11월 19일
0

**moment.js**

설치

npm install --save moment

선언

const moment = require('moment');

문자열을 date로 표현

console.log(moment("2022-04-27") //Moment<2022-04-27T00:00:00+9:00>

형식을 지정해 줄려면 format()을 사용하면 된다

const date = moment("2021-01-27");
// 년-월-일
console.log(date.format("YYYY-MM-DD")); // 2021-01-27
// 시:분:초
console.log(date.format("HH:mm:ss")); // 00:00:00
// 요일
console.log(date.format("dddd")); // Wednesday
// 년-월-일 요일
console.log(date.format("YYYY-MM-DD dddd")); // 2021-01-27
// 년-월-일 시:분:초
console.log(date.format("YYYY-MM-DD HH:mm:ss")); // 2021-01-27 00:00:00
// 년-월-일 요일 시:분:초
console.log(date.format("YYYY-MM-DD dddd HH:mm:ss")); // 2021-01-27 Wednesday 00:00:00

날짜를 더하거나 빼기 add(), subtract()

console.log(moment("2021-01-27").add(1, "days")); // 2021-01-28
console.log(moment("2021-01-27").add(2, "months")); // 2021-03-27
console.log(moment("2021-01-27").add(2, "years")); // 2023-01-27
console.log(moment("2021-01-27").subtract(1, "days")); // 2021-01-26
console.log(moment("2021-01-27").subtract(2, "months")); // 2020-11-27
console.log(moment("2021-01-27").subtract(2, "years")); // 2019-01-27

날짜 더하거나 뺄 때 생길 수 있는 문제점

한 moment 변수를 기준으로 날짜를 연속적으로 더하거나 빼게 되면 해당 변수도 add or subtract 함수를 실행하는 도중 값이 변하게 된다.

const now = moment("2021-01-27");
console.log(now.add(3, "days")); // 2021-01-30
console.log(now.subtract(5, "days")); // 2021-01-25
console.log(now); // 2021-01-25

해결 방법 clone()

add or subtract를 하기 전에 clone() 함수를 사용하면 된다.

const fixedNow = moment("2021-01-27");
console.log(fixedNow.clone().add(3, "days")); // 2021-01-30
console.log(fixedNow.clone().subtract(5, "days")); // 2021-01-22
console.log(fixedNow); // 2021-01-27

시간 순서 비교

isBefore():moment() 날짜가 isBefore 파라미터 날짜보다 이전인지 여부

console.log(moment("2020-12-31").isBefore("2021-01-01")); // true
console.log(moment("2020-12-31").isBefore("2020-12-30")); // false

isAfter(): moment()의 날짜가 isAfter의 파라미터 날짜보다 이후인지 여부

console.log(moment("2020-12-31").isAfter("2021-01-01")); // false
console.log(moment("2020-12-31").isAfter("2020-12-30")); // true

isSame(): moment()의 날짜가 isSame의 파라미터 날짜와 같은지 여부

console.log(moment("2020-12-31").isSame("2021-01-01")); // false
console.log(moment("2020-12-31").isSame("2020-12-31")); // true

isSameOrBefore(): moment()의 날짜가 isSameOrBefore의 파라미터 날짜와 같거나 이후인지 여부

console.log(moment("2020-12-31").isSameOrBefore("2021-01-01")); // true
console.log(moment("2020-12-31").isSameOrBefore("2020-12-31")); // true
console.log(moment("2020-12-31").isSameOrBefore("2020-12-30")); // false

isSameOrAfter(): moment()의 날짜가 isSameOrAfter의 파라미터 날짜와 같거나 이후인지 여부

console.log(moment("2020-12-31").isSameOrAfter("2021-01-01")); // false
console.log(moment("2020-12-31").isSameOrAfter("2020-12-31")); // true
console.log(moment("2020-12-31").isSameOrAfter("2020-12-30")); // true

isBetween(): moment()의 날짜가 isBetween의 파라미터들 사이의 날짜인지 여부

sBetween의 첫 번째 파라미터는 항상 두 번쨰 파라미터보다 이전인 날짜여야 한다. 그렇지 않으면 결과가 제대로 출력되지 않는다

console.log(moment("2020-12-31").isBetween("2020-12-01", "2021-01-01")); // true
console.log(moment("2020-12-31").isBetween("2021-01-01", "2021-01-02")); // false

// isBetween의 첫 번째 파라미터는 항상 두 번쨰 파라미터보다 이전인 날짜여야 한다.
// 그렇지 않으면 항상 false
console.log(moment("2020-12-31").isBetween("2021-01-01", "2020-12-01")); // false

시간 차이: diff()

moment()의 날짜를 기준으로 diff의 첫 번쨰 파라미터 날짜와의 차이를 두 번째 파라미터를 기준으로 계산하여 출력한다.

console.log(moment("2020-12-31").diff("2020-12-30", "days")); // 1
console.log(moment("2020-12-30").diff("2020-12-31", "days")); // -1
console.log(moment("2020-12-31").diff("2020-12-30", "minute")); // 1440
console.log(moment("2020-12-30").diff("2020-12-31", "minute")); // -1440

참조: • https://momentjs.com/docs/

0개의 댓글