많은 JavaScript 날짜 관련 라이브러리중 가장 가벼운 라이브러리
업데이트가 중단된 moment.js 보다 약 33배 가벼우며, immutable 한 구조라서 굉장히 많이 사용되고 있는 라이브러리
일반적인 use case의 범위를 초과하는 광범위한 Date 연산을 지원하기 때문 Moment.js
는 사이즈가 매우 큰 라이브러리
➡ 사용하지도 않는 기능들 때문에 네트워크 비용은 오르고, 다운로드 속도는 느려지고, 페이지 렌더링 시간은 늘어난다.
Moment.js의 공식 문서에 Moment.js를 대체하기에 좋은 라이브러리들이 소개되어 있는데, 그 중에 Day.js
를 선택
npm install dayjs
import dayjs from "dayjs";
or
const dayjs = require("dayjs");
dayjs() 함수
를 사용해 현재 날짜와 시간 객체를 생성
var now = dayjs();
now.format();
dayjs() 함수
를 사용해 원하는 날짜 및 시간을 입력하여 객체를 생성
var date = dayjs("2021-10-10");
date.format(); // 2021-10-09 T00:00:00+09:00
var date = dayjs("2021.10.10", "YYYY.MM.DD");
date.format(); // 2021-10-09 T00:00:00+09:00
var date = dayjs("10/10/21", "MM/DD/YY");
date.format(); // 2021-10-09 T00:00:00+09:00
var date = dayjs("2021-10-10 10:30:25", "YYYY-MM-DD HH:mm:ss");
date.format(); // 2021-10-09 T10:30:25+09:00
format() 함수
를 사용하여 원하는 형태를 입력하고 원하는 형태의 문자열로 변경
var date = dayjs("2021-10-11 10:30:25", "YYYY-MM-DD HH:mm:ss");
date.format(); // 2021-10-11T10:30:25+09:00
date.format("YY-MM-DD"); // 21-10-11
date.format("DD/MM/YY"); // 11/10/21
date.format("YYYY.MM.DD HH:mm:ss"); // 2021.10.11 10:30:25
get() 함수
를 사용하여 날짜 객체에서 원하는 시간 단위의 값 구함
var now = dayjs();
now.format(); // 2021-10-10T19:03:02+09:00
now.get("year"); // 2021 (년)
now.get("y"); // 2021 (년)
now.get("month"); // 9 (월 - 0~11)
now.get("M"); // 9 (월 - 0~11)
now.get("date"); // 10 (일)
now.get("D"); // 10 (일)
now.get("day"); // 0 (요일 - 일요일 : 0, 토요일 : 6)
now.get("d"); // 0 (요일 - 일요일 : 0, 토요일 : 6)
now.get("hour"); // 19 (시)
now.get("h"); // 19 (시)
now.get("minute"); // 3 (분)
now.get("m"); // 3 (분)
now.get("second"); // 2 (초)
now.get("s"); // 2 (초)
now.get("millisecond"); // 179 (밀리초)
now.get("ms"); // 179 (밀리초)
diff() 함수
를 사용하여 두 날짜의 차이를 구할 수 있음
diff() 함수
를 사용할 때 3번째 인수로 true 를 입력해주면 소수점까지 볼 수 있음
const date1 = dayjs("2021-10-11 10:30:25.495", "YYYY-MM-DD HH:mm:ss.SSS");
const date2 = dayjs("2020-04-08 13:25:30.000", "YYYY-MM-DD HH:mm:ss.SSS");
date1.format("YYYY-MM-DD HH:mm:ss.SSS"); // 2021-10-11 10:30:25.495
date2.format("YYYY-MM-DD HH:mm:ss.SSS"); // 2020-04-08 13:25:30.000
date1.diff(date2); // 47595895495
date1.diff(date2, "year"); // 1
date1.diff(date2, "y"); // 1
date1.diff(date2, "y", true); // 1.5077376883898348
date1.diff(date2, "month"); // 18
date1.diff(date2, "M"); // 18
date1.diff(date2, "M", true); // 18.09285226067802
date1.diff(date2, "week"); // 78
date1.diff(date2, "w"); // 78
date1.diff(date2, "w", true); // 78.69691715443122
date1.diff(date2, "day"); // 550
date1.diff(date2, "d"); // 550
date1.diff(date2, "d", true); // 550.8784200810185
date1.diff(date2, "hour"); // 13221
date1.diff(date2, "h"); // 13221
date1.diff(date2, "h", true); // 13221.082081944445
date1.diff(date2, "minute"); // 793264
date1.diff(date2, "m"); // 793264
date1.diff(date2, "m", true); // 793264.9249166667
date1.diff(date2, "second"); // 47595895
date1.diff(date2, "s"); // 47595895
date1.diff(date2, "s", true); // 47595895.495
date1.diff(date2, "millisecond"); // 47595895495
date1.diff(date2, "ms"); // 47595895495
date1.diff(date2, "ms", true); // 47595895495```
이외의 더 다양한 함수들이 많지만, 프로젝트에 직접 적용한 함수들만 정리합니다.
공식문서 https://jsikim1.tistory.com/196
참고한 문서 https://jsikim1.tistory.com/196