Programing/javascript

자바스크립트 날짜 다루기: Date vs dayjs vs date-fns

2025. 4. 24. 08:43
반응형

웹 애플리케이션에서 날짜와 시간을 다루는 작업은 매우 흔하지만, 자바스크립트의 기본 Date 객체만으로는 복잡한 날짜 계산이나 포맷 변경 등을 처리하기 까다롭습니다. 이를 보완하기 위해 등장한 라이브러리들이 dayjs, date-fns이며, 두 라이브러리는 moment.js의 대안으로 널리 쓰이고 있습니다.

이 글에서는 자바스크립트에서 날짜를 다루는 세 가지 방법을 비교하고, 각각의 특징과 사용법을 예제로 정리합니다.


✅ 기본 내장 객체: Date

const now = new Date();
console.log(now.toISOString()); // 현재 시간 ISO 포맷

const specific = new Date("2024-04-01T12:00:00");
console.log(specific.getFullYear()); // 2024
  • 브라우저 내장 객체로 별도 설치 없이 사용 가능
  • 기능은 많지만 직관적이지 않고 메서드 일관성이 부족
  • 시간대(Timezone) 처리나 포맷 지정이 불편함

📦 dayjs: 가볍고 moment.js와 유사한 API

npm install dayjs
import dayjs from "dayjs";

const now = dayjs();
console.log(now.format("YYYY-MM-DD HH:mm"));

const added = now.add(3, 'day');
console.log(added.format("MMM D"));
  • moment.js와 거의 동일한 API 제공
  • 파일 크기 작고 성능 우수
  • 체이닝이 간결하고 직관적
  • immutable 구조

📦 date-fns: 함수 단위 조합형 유틸리티

npm install date-fns
import { format, addDays, parseISO } from "date-fns";

const now = new Date();
console.log(format(now, "yyyy-MM-dd HH:mm"));

const added = addDays(now, 5);
console.log(format(added, "MMM d"));
  • 함수 기반 모듈화 구조
  • 트리 셰이킹(Tree-shaking)에 최적화되어 빌드 크기 절감
  • 지역화(다국어) 지원 강력함
  • 기존 Date 객체와 자연스럽게 호환

🔍 비교 요약

항목 Date (기본) dayjs date-fns
설치 필요 ❌ ✅ (dayjs) ✅ (date-fns)
체이닝 지원 ❌ ✅ ❌ (함수형 조합)
포맷 지원 제한적 강력함 (.format) 강력함 (format)
다국어 지원 ❌ 플러그인 필요 ✅ 기본 지원
파일 크기 작음 작음 (~2KB) 작음 + 트리 셰이킹
사용성 복잡 직관적 모듈화 유연

✨ 결론

  • 단순한 날짜만 다룰 경우에는 Date도 충분하지만, 포맷이나 계산이 많아지면 라이브러리 사용이 권장됩니다.
  • 체이닝 중심으로 사용하고 싶다면 dayjs
  • 함수형 스타일과 빌드 최적화를 원한다면 date-fns

각 프로젝트의 특성과 스타일에 맞게 라이브러리를 선택하면 유지보수성과 생산성을 높일 수 있습니다.

반응형

'Programing > javascript' 카테고리의 다른 글

JSON.stringify vs JSON.parse 제대로 이해하기  (0) 2025.04.29
fetch로 REST API 호출하기: 기본 사용법, 응답 처리, 에러 처리까지  (0) 2025.04.29
자바스크립트 Date 객체 소개, 예제, 그리고 심화 활용법  (1) 2025.04.24
moment.js 소개, 사용법, 그리고 심화 이해  (0) 2025.04.24
브라우저 저장소 정리: localStorage vs sessionStorage vs cookie  (0) 2025.04.24
자바스크립트 이벤트 위임(Event Delegation)과 성능 최적화  (0) 2025.04.24
자바스크립트 debounce와 throttle 차이 및 성능 최적화 예제  (0) 2025.04.24
자바스크립트 IIFE 패턴(즉시 실행 함수 표현식)의 쓰임새와 모던 대안  (0) 2025.04.24
'Programing/javascript' 카테고리의 다른 글
  • 자바스크립트 Date 객체 소개, 예제, 그리고 심화 활용법
  • moment.js 소개, 사용법, 그리고 심화 이해
  • 브라우저 저장소 정리: localStorage vs sessionStorage vs cookie
  • 자바스크립트 이벤트 위임(Event Delegation)과 성능 최적화
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (478)
      • 금융 (61)
      • Programing (295)
        • Algorithm (39)
        • API (2)
        • javascript (122)
        • CSS (8)
        • HTML (10)
        • PHP (15)
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (21)
        • MS-SQL (1)
        • MySQL (13)
        • 보안 (5)
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (6)
      • IT 일반 (15)
      • 리뷰 (38)
        • Book (17)
        • 제품 (2)
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (36)
        • 회고 (3)
        • 컬럼 (4)
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    자바스크립트
    iT's MY LiFE
    Java
    블로그
    기초
    IT·컴퓨터
    사고 싶은 책
    js패턴
    자바
    IT 관련
    JavaScript
    위시리스트
    IT블로그
    디자인패턴
    자바스크립트유틸
    읽고 싶은 책
    It
    php
    jsp
    SQL
Dongkkase
자바스크립트 날짜 다루기: Date vs dayjs vs date-fns
상단으로

티스토리툴바