[mjt] Date 객체와 날짜에 대해 알아보자
Date 객체와 날짜에 대해 알아보자
JavaScript에서 날짜와 시간을 다룰 때 사용하는 주요 도구는 Date
객체다. Date
객체는 날짜 및 시간을 생성, 조작, 형식화하는 기능을 제공하며, Date
객체의 기본 사용법부터 실무에서 자주 사용되는 기능까지 알아보자.
Date 객체 생성
Date
객체는 다양한 방법으로 생성이 가능하다.
1-1) 현재 날짜와 시간 생성
const now = new Date();
console.log(now); // 현재 날짜와 시간 출력
1-2) 특정 날짜 생성
const specificDate = new Date("2025-01-03");
console.log(specificDate); // Wed Jan 03 2025 00:00:00
1-3) 연도, 월, 일 등으로 생성
const anotherDate = new Date(2025, 0, 1); // 월은 0부터 시작 (0 = 1월)
console.log(anotherDate); // Wed Jan 01 2025 00:00:00
Date 객체 메서드
Date
객체는 날짜와 시간을 다룰 수 있는 다양한 메서드를 제공한다.
2-1) 날짜와 시간 가져오기
console.log(now.getFullYear()); // 연도 (예: 2025)
console.log(now.getMonth()); // 월 (0부터 시작, 예: 0 = 1월)
console.log(now.getDate()); // 일 (예: 2)
console.log(now.getDay()); // 요일 (0 = 일요일, 1 = 월요일)
console.log(now.getHours()); // 시간
console.log(now.getMinutes()); // 분
console.log(now.getSeconds()); // 초
2-2) 날짜와 시간 설정
const date = new Date();
date.setFullYear(2030);
date.setMonth(11); // 12월
date.setDate(25);
console.log(date); // 2030-12-25
2-3) 타임스탬프
const now = Date.now(); // 1970년 1월 1일 00:00:00 UTC 이후의 밀리초
console.log(now);
날짜와 시간 포맷팅
JavaScript 기본 Date 객체는 포맷팅 기능이 제한적이며 Intl.DateTimeFormat
API나 외부 라이브러리(dayjs
, date-fns
, moment.js
등)를 사용하는 것이 좋다.
3-1) 기본 문자열 변환
const now = new Date();
console.log(now.toISOString()); // ISO 8601 포맷
console.log(now.toDateString()); // 간단한 날짜 문자열
console.log(now.toTimeString()); // 간단한 시간 문자열
시간 계산
날짜와 시간 계산은 타임스탬프를 활용하면 간단하다.
4-1) 날짜와 간격 계산
const startDate = new Date("2025-01-01");
const endDate = new Date("2025-12-31");
const diff = endDate - startDate; // 밀리초 단위
const days = diff / (1000 * 60 * 60 * 24); // 일 단위로 변환
console.log(days); // 364
4-2) 날짜 더하기, 빼기
const date = new Date();
date.setDate(date.getDate() + 7); // 7일 후
console.log(date);
date.setDate(date.getDate() - 14); // 14일 전
console.log(date);
주의할 점
5-1) 월은 0부터 시작
Date
객체에서 월(Month
)는 0월부터 시작한다. 예를 들어, 1월은 0
이고 12월은 11
로 설정해야 한다.
5-2) 시간대와 UTC
Date
객체는 기본적으로 로컬 시간대를 기준으로 동작하며 UTC 기준으로 시간을 설정하거나 가저오려면 getUTC...
메서드를 사용해야한다.
5-3) 외부 라이브러리 추천
Date
객체만으로는 복잡한 날짜 계산과 포맷팅이 어려우며, 실무에서는 dayjs, date-fns, moment.js 같은 라이브러리를 사용하는 것이 편리하다.
회고
Date 객체는 간단한 날짜와 시간 작업에 유용하지만, 복잡한 계산이나 포맷팅 작업에서는 제한적이다. 기본 사용법을 잘 익힌 뒤, 실무에서는 외부 라이브러리와 병행하여 사용하는 것이 좋을 것 같다..