:ledger: Date 객체와 날짜에 대해 알아보자

JavaScript에서 날짜와 시간을 다룰 때 사용하는 주요 도구는 Date 객체다. Date 객체는 날짜 및 시간을 생성, 조작, 형식화하는 기능을 제공하며, Date 객체의 기본 사용법부터 실무에서 자주 사용되는 기능까지 알아보자.

:one: Date 객체 생성

Date 객체는 다양한 방법으로 생성이 가능하다.

:pushpin: 1-1) 현재 날짜와 시간 생성

const now = new Date();
console.log(now); // 현재 날짜와 시간 출력

:pushpin: 1-2) 특정 날짜 생성

const specificDate = new Date("2025-01-03");
console.log(specificDate); // Wed Jan 03 2025 00:00:00

:pushpin: 1-3) 연도, 월, 일 등으로 생성

const anotherDate = new Date(2025, 0, 1); // 월은 0부터 시작 (0 = 1월)
console.log(anotherDate); // Wed Jan 01 2025 00:00:00

:two: Date 객체 메서드

Date 객체는 날짜와 시간을 다룰 수 있는 다양한 메서드를 제공한다.

:pushpin: 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()); // 초

:pushpin: 2-2) 날짜와 시간 설정

const date = new Date();

date.setFullYear(2030);
date.setMonth(11); // 12월
date.setDate(25);

console.log(date); // 2030-12-25

:pushpin: 2-3) 타임스탬프

const now = Date.now(); // 1970년 1월 1일 00:00:00 UTC 이후의 밀리초
console.log(now);

:three: 날짜와 시간 포맷팅

JavaScript 기본 Date 객체는 포맷팅 기능이 제한적이며 Intl.DateTimeFormat API나 외부 라이브러리(dayjs, date-fns, moment.js 등)를 사용하는 것이 좋다.

:pushpin: 3-1) 기본 문자열 변환

const now = new Date();
console.log(now.toISOString()); // ISO 8601 포맷
console.log(now.toDateString()); // 간단한 날짜 문자열
console.log(now.toTimeString()); // 간단한 시간 문자열

:four: 시간 계산

날짜와 시간 계산은 타임스탬프를 활용하면 간단하다.

:pushpin: 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

:pushpin: 4-2) 날짜 더하기, 빼기

const date = new Date();
date.setDate(date.getDate() + 7); // 7일 후
console.log(date);

date.setDate(date.getDate() - 14); // 14일 전
console.log(date);

:five: 주의할 점

:pushpin: 5-1) 월은 0부터 시작

Date객체에서 월(Month)는 0월부터 시작한다. 예를 들어, 1월은 0이고 12월은 11로 설정해야 한다.

:pushpin: 5-2) 시간대와 UTC

Date객체는 기본적으로 로컬 시간대를 기준으로 동작하며 UTC 기준으로 시간을 설정하거나 가저오려면 getUTC...메서드를 사용해야한다.

:pushpin: 5-3) 외부 라이브러리 추천

Date 객체만으로는 복잡한 날짜 계산과 포맷팅이 어려우며, 실무에서는 dayjs, date-fns, moment.js 같은 라이브러리를 사용하는 것이 편리하다.

:fire: 회고

Date 객체는 간단한 날짜와 시간 작업에 유용하지만, 복잡한 계산이나 포맷팅 작업에서는 제한적이다. 기본 사용법을 잘 익힌 뒤, 실무에서는 외부 라이브러리와 병행하여 사용하는 것이 좋을 것 같다..

:pushpin: 참고 문서

태그:

카테고리: ,

업데이트: