web developer

[javaScript] Moment.js / 날짜 및 시간을 조작하는 라이브러리 본문

JavaScript

[javaScript] Moment.js / 날짜 및 시간을 조작하는 라이브러리

trueman 2022. 11. 27. 19:44
728x90
728x90

Moment.js


Moment.js는 JavaScript에서 날짜 및 시간을 조작하고 작업하는데 도움이 되는 JavaScript 라이브러리입니다. Moment.js는 JavaScript에서 날짜 및 시간과 관련된 라이브러리 중에서 가장 오래되었지만, 현재 다음 두 가지 이유로 개발이 중단되었습니다.

  • Moment.js의 용량 문제
  • 너무 오래되어 신규 기능 추가가 어려움

Moment.js 개발자 중 한 명은 Moment.js의 단점을 극복하기 위해 Luxon.js라는 라이브러를 만들었으며, 날짜 및 시간을 조작하는 라이브러리는 Luxon.js 외에도 Day.jsdate-fns.js 등 여러 가지가 존재합니다.


<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
import moment from 'moment';
const moment = require('moment');

 moment(), format()


var now = moment();
now.format(); // 2021-10-09T00:01:13+09:00

format() 함수를 사용하여 원하는 형태를 입력하고 원하는 형태의 문자열로 변경할 수 있습니다.


var now = moment();
now.format(); // 2022-11-27 T19:36:20+09:00
now.format("YY-MM-DD");	// 22-11-27
now.format("DD/MM/YY");	// 27/11/22
now.format("YYYY.MM.DD HH:mm:ss"); // 2022.11.27 19:37:39

add() : 날짜 및 시간 더하기


moment 객체를 조작하는 다양한 옵션들이 있다. 예를 들면, days, months, years 등을 더하거나 뺄 수 있다. add()와 subtract() 메소드를 이용하면 된다.

// 2023-11-27 T19:39:36+09:00
moment().add(1, "years").format();
moment().add(1, "y").format(); 

// 2022-12-27 T19:39:36+09:00
moment().add(1, "months").format();
moment().add(1, "M").format();

// 2022-12-04 T19:42:31+09:00
moment().add(1, "weeks").format();
moment().add(1, "w").format();

// 2022-11-28 T19:42:31+09:00
moment().add(1, "days").format();  
moment().add(1, "d").format();

// 2022-11-27 T20:42:31+09:00
moment().add(1, "hours").format();
moment().add(1, "h").format();

// 2022-11-27 T19:43:31+09:00
moment().add(1, "minutes").format();
moment().add(1, "m").format(); 

// 2022-11-27 T19:42:32+09:00
moment().add(1, "seconds").format(); 
moment().add(1, "s").format(); 

// 2022-11-27 T19:42:32+09:00
moment().add(1000, "milliseconds").format();
moment().add(1000, "ms").format();

subtract() :  날짜 및 시간 빼기


// 2021-11-27 T19:50:07+09:00
moment().subtract(1, "years").format();
moment().subtract(1, "y").format();

// 2022-10-27 T19:50:07+09:00
moment().subtract(1, "months").format();
moment().subtract(1, "M").format();

// 2022-11-20 T19:50:07+09:00
moment().subtract(1, "weeks").format();
moment().subtract(1, "w").format();

diff() : 날짜 및 시간 차이


var date1 = moment();
var date2 = moment("2022-10-27");

// 2022-11-27 T19:52:44+09:00
date1.format();

// 2022-10-27 T00:00:00+09:00
date2.format();

date1.diff(date2);           // 2749964746
date1.diff(date2, "years");  // 0
date1.diff(date2, "months"); // 1
date1.diff(date2, "weeks");  // 4

fromNow() : 현재 날짜 및 시간을 기준으로 상대적인 시간


// 2022-11-27T19:59:39+09:00
moment().format(); 

// a few seconds ago
moment().fromNow(); 

moment().startOf("day").fromNow();  // 20 hours ago
moment().endOf("day").fromNow();    // in 4 hours
moment("2021-10-27").fromNow();     // a year ago

isBetween() : 날짜가 지정한 시간 단위에서 특정 날짜들 사이에 있는지 여부 확인


 

var date = moment("2022-11-27"); 

date.isBetween("2022-11-26", "2022-11-27"); // false
date.isBetween("2022-11-27", "2022-11-28"); // true 

date.isBetween("2021-11-26", "2022-11-27", "day"); // false
date.isBetween("2022-11-26", "2022-11-28", "day"); // true
date.isBetween("2022-10-27", "2022-12-27", "month"); // true
date.isBetween("2021-11-27", "2022-12-27", "year"); // false
date.isBetween("2021-11-27", "2023-11-27", "year"); // true

date.isBetween("2022-11-27", "2022-11-28", undefined, "()"); // false
date.isBetween("2022-11-27", "2022-11-28", undefined, "[)"); // true
date.isBetween("2022-11-27", "2022-11-28", undefined, "(]"); // false
date.isBetween("2022-11-27", "2022-11-28", undefined, "[]"); // true

isBetween() 함수를 사용하여 날짜 객체가 특정 날짜들 사이에 있는지 확인할 수 있습니다.

isBetween() 함수에서 첫번째와 두번째에 날짜를 넣는 부분에 undefined를 입력하면 오늘 날짜로 대체됩니다.

세번째 인수에는 시간 단위를 지정할 수 있습니다.

네번째 인수에서 '('와 ')'는 입력한 시작날짜와 마지막 날짜를 포함하지 않고 비교하도록 하고, '['와 ']'는 입력한 시작날짜와 마지막 날짜를 포함하여 비교하도록 설정합니다.

728x90
728x90