language/Javascript

[Javascript] Dayjs (날짜 라이브러리)

닉네임없음ㅎ 2024. 7. 4. 19:49

dayjs란? 

자바스크립트에서 날짜/시간을 쉽게 파싱하고 계산할 수 있도록 도와주는 라이브러리임. 

장점으로는 사이즈가 매우 작다(7.1KB)
(자바스크립트 날짜 관련 라이브러리 중 가장 가볍다고 한다)

dayjs에는 기본적인 기능들이 있고, 추가적인 기능은 dayjs/plugin을 통해 확장할 수 있다. 

 

 

usage trend를 보면 dayjs의 사용이 급격하게 증가하는 것을 확인할 수 있다.

 

그럼 사용해보자 !!!!!!


- 설치 

npm install dayjs
yarn add dayjs



- 사용

import * as dayjs from 'dayjs';



- 현재 날짜 및 시간 객체 생성
const now = dayjs();
now.format();

- 원하는 날짜 및 시간 입력하여 객체 생성
const date = dayjs('2024-07-03');
date.format();

- 원하는 단위 값 구하기 get()

const now = dayjs();

now.format();

now.get('year');
now.get('y');

now.get('month');
now.get('m');



콘솔에 한번 찍어보았다.

const now = dayjs();
console.log(now.format());

const date = dayjs('2024-08-01')
console.log(date.format());

console.log('시간단위');
console.log(now.get('year'));   // 2024-07-03

console.log(now.get('month'));  // 2024-07-03
console.log(date.get('month')); // 2024-08-01
console.log(now.get('day'));    // 2024-07-03

 

이렇게 출력되는데 뭔가 이상한걸 알 수 있음. 
7월과 8월의 get('month')에서 왜 6과 7이 출력되는건가 !

dayjs에서 get('month')를 호출할 때, 월(month)은 0부터 11까지의 숫자로 표현된다.
즉, 0은 1월, 1은 2월, ...., 6은 7월, ...., 11은 12월을 의미한다.

그러므로 현재 날짜가 7월인 경우 get('month')를 했을때 6이 출력되는 것. 
이것은 0기반 인덱싱 때문임 !!!! 

 

하는 프로젝트에서 날짜 차이를 구해야하는게 있었는데 dayjs를 사용하여 코드가 아주 간결하고 깔끔해졌다 ! 굿

const today = dayjs();
const todayFormat = today.format('YYYY-MM-DD');
const threeDaysBefore = today.add(3, 'day').format('YYYY-MM-DD')
const twoDaysBefore = today.add(2, 'day').format('YYYY-MM-DD')
const oneDayBefore = today.add(1, 'day').format('YYYY-MM-DD')






https://www.npmjs.com/package/dayjs
https://github.com/iamkun/dayjs

 

GitHub - iamkun/dayjs: ⏰ Day.js 2kB immutable date-time library alternative to Moment.js with the same modern API

⏰ Day.js 2kB immutable date-time library alternative to Moment.js with the same modern API - iamkun/dayjs

github.com