반응형
기본적으로 new Date()는 UTC 기준으로 동작합니다. 이를 **KST(한국 표준시, UTC+9)**로 변환하는 방법을 설명합니다.
🚀 1. Intl.DateTimeFormat 사용 (권장)
JavaScript의 Intl.DateTimeFormat API를 사용하면 타임존 변환이 간단합니다.
const date = new Date();
const kstDate = new Intl.DateTimeFormat('ko-KR', {
timeZone: 'Asia/Seoul', // ✅ KST 적용
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: false, // ✅ 24시간제 사용
}).format(date);
console.log(`📌 KST 시간: ${kstDate}`);
💡 출력 예시:
📌 KST 시간: 2024. 02. 25. 15:30:45
✅ Intl.DateTimeFormat을 사용하는 이유
- 최신 표준 지원 (ECMAScript 국제화)
- 시간대 자동 적용
- 성능 최적화
🚀 2. toLocaleString() 사용
toLocaleString()을 사용하여 KST로 변환할 수도 있습니다.
const date = new Date();
const kstDate = date.toLocaleString('ko-KR', { timeZone: 'Asia/Seoul' });
console.log(`📌 KST 시간: ${kstDate}`);
💡 출력 예시:
📌 KST 시간: 2024. 2. 25. 오후 3:30:45
✅ toLocaleString()은 간편하지만, 시간 형식이 다소 달라질 수 있음.
🚀 3. moment-timezone 사용 (강력한 기능 제공)
moment-timezone을 사용하면 더 다양한 포맷 지정 가능.
📌 설치
npm install moment-timezone
📌 코드 예제
const moment = require('moment-timezone');
const kstDate = moment().tz("Asia/Seoul").format("YYYY-MM-DD HH:mm:ss");
console.log(`📌 KST 시간: ${kstDate}`);
💡 출력 예시:
📌 KST 시간: 2024-02-25 15:30:45
✅ moment-timezone 사용 시 장점
- 여러 타임존 변환 가능
- 포맷 지정 가능
- Date 객체와 연동 가능
🚀 4. Date 객체에서 직접 변환 (UTC 오프셋 적용)
UTC 시간에 9시간을 추가하여 KST로 변환할 수도 있습니다.
const date = new Date();
const kstDate = new Date(date.getTime() + (9 * 60 * 60 * 1000)); // ✅ UTC+9 적용
console.log(`📌 KST 시간: ${kstDate.toISOString().replace('T', ' ').slice(0, 19)}`);
💡 출력 예시:
📌 KST 시간: 2024-02-25 15:30:45
✅ 직접 Date 객체를 변환하는 방법이지만, Intl.DateTimeFormat보다 추천하지 않음.
✅ 🎯 정리 (어떤 방법을 선택할까?)
방법코드 예제장점단점
Intl.DateTimeFormat | ✅ new Intl.DateTimeFormat('ko-KR', { timeZone: 'Asia/Seoul' }) | 표준 지원, 성능 최적화 | 포맷 지정이 다소 제한적 |
toLocaleString() | ✅ date.toLocaleString('ko-KR', { timeZone: 'Asia/Seoul' }) | 간편 사용 | 출력 형식이 다를 수 있음 |
moment-timezone | ✅ moment().tz("Asia/Seoul").format("YYYY-MM-DD HH:mm:ss") | 강력한 포맷팅 기능 | 패키지 설치 필요 |
UTC 오프셋 변환 | ✅ new Date(date.getTime() + (9 * 60 * 60 * 1000)) | 직접 변환 가능 | DST(일광 절약 시간) 고려 안됨 |
✅ 📌 추천 방법
- 최신 프로젝트 & 표준 지원이 필요하면 → Intl.DateTimeFormat()
- 간단하게 변환하려면 → toLocaleString()
- 강력한 포맷팅이 필요하면 → moment-timezone
- UTC에서 오프셋 변환하려면 → Date + 9시간 추가
728x90
반응형
'개발라이프 > 자바스크립트' 카테고리의 다른 글
TypeScript 전역 설치 vs 로컬 설치 – 무엇을 선택해야 할까? (0) | 2025.04.02 |
---|---|
Node.js에서 ?? (null 병합 연산자) 완전 정리 (0) | 2025.04.01 |
Node.js에서 CSV 스트림 처리 시 비동기 이슈 해결법 (0) | 2025.02.25 |
JavaScript에서 부동소수점 연산 오차와 해결 방법 (0) | 2025.02.14 |
JavaScript에서 forEach에서 break 사용하기: 완벽 가이드 (0) | 2025.01.31 |