1. Date 객체의 기본 동작
Date 객체는 기본적으로 컴퓨터의 로컬 시간대를 기준으로 동작합니다.
예를 들어, 한국 표준시(KST, UTC+9) 환경에서 new Date()를 생성하면 현재 로컬 시간 기준의 날짜와 시간을 반환합니다.
// 로컬 시간 기준 현재 시간 생성
const now = new Date();
console.log(now);
// 예: Sat Nov 16 2024 20:30:00 GMT+0900 (KST)
2. UTC와 로컬 시간
UTC (Coordinated Universal Time)
UTC는 세계 표준 시간으로, 시간대를 고려하지 않은 시간입니다. JavaScript에서는 toISOString() 메서드를 통해 UTC 시간을 ISO 8601 형식으로 얻을 수 있습니다.
console.log(now.toISOString());
// 예: 2024-11-16T11:30:00.000Z (Z는 UTC임을 나타냄)
로컬 시간
로컬 시간은 컴퓨터의 시간대 설정을 기준으로 한 시간입니다. toLocaleString() 메서드를 사용하면 로컬 시간으로 포맷된 문자열을 얻을 수 있습니다.
console.log(now.toLocaleString());
// 예: 2024. 11. 16. 오후 8:30:00
3. 시간 문자열 처리
JavaScript에서 Date 객체를 생성할 때 시간 문자열을 인자로 전달하면, 문자열 형식과 내용에 따라 처리 방식이 달라집니다.
(1) UTC 시간 문자열
UTC 시간 문자열(예: 2024-11-16T11:30:00Z)은 UTC로 바로 처리됩니다.
const utcDate = new Date('2024-11-16T11:30:00Z');
console.log(utcDate);
// Sat Nov 16 2024 20:30:00 GMT+0900 (KST)
console.log(utcDate.toISOString());
// 2024-11-16T11:30:00.000Z
(2) 시간대가 포함된 문자열
시간대(+09:00 등)가 포함된 문자열은 해당 시간대를 기준으로 UTC로 변환됩니다.
const tzDate = new Date('2024-11-16T20:30:00+09:00');
console.log(tzDate);
// Sat Nov 16 2024 20:30:00 GMT+0900 (KST)
console.log(tzDate.toISOString());
// 2024-11-16T11:30:00.000Z
(3) 시간대가 없는 ISO 8601 형식
시간대가 명시되지 않은 ISO 8601 형식(예: 2024-11-16T20:30:00)은 UTC 기준으로 처리됩니다.
const noTzDate = new Date('2024-11-16T20:30:00');
console.log(noTzDate);
// Sun Nov 17 2024 05:30:00 GMT+0900 (KST)
console.log(noTzDate.toISOString());
// 2024-11-16T20:30:00.000Z
(4) 비-ISO 포맷
ISO 포맷이 아닌 문자열(예: 2024-11-16 20:30:00)은 로컬 시간대로 처리됩니다.
const localDate = new Date('2024-11-16 20:30:00');
console.log(localDate);
// Sat Nov 16 2024 20:30:00 GMT+0900 (KST)
console.log(localDate.toISOString());
// 2024-11-16T11:30:00.000Z
4. 타임존 확인
Date 객체의 getTimezoneOffset() 메서드는 현재 컴퓨터의 시간대 오프셋(UTC와의 차이, 분 단위)을 반환합니다.
console.log(new Date().getTimezoneOffset());
// -540 (한국 시간은 UTC+9이므로 -540분)
5. UTC와 로컬 시간 변환
UTC 시간 → 로컬 시간
toLocaleString() 메서드를 사용하면 UTC 시간을 로컬 시간으로 변환해 표시할 수 있습니다.
const utcTime = new Date('2024-11-16T11:30:00Z');
console.log(utcTime.toLocaleString());
// 2024. 11. 16. 오후 8:30:00 (KST)
로컬 시간 → UTC 시간
toISOString() 메서드를 사용하면 로컬 시간을 UTC 시간으로 변환해 표시할 수 있습니다.
const localTime = new Date('2024-11-16 20:30:00');
console.log(localTime.toISOString());
// 2024-11-16T11:30:00.000Z
'프로그래밍' 카테고리의 다른 글
Mac Node.js 버전 관리 도구: n vs nvm 비교 및 사용법 (1) | 2024.11.27 |
---|---|
Swift 시간복잡도 빅오(Big-O) 주요 예제 (0) | 2024.11.22 |
[Next.js] NEXT_PUBLIC_ env undefined 해결하기 (0) | 2024.06.19 |
cURL 로 POST 요청 JSON 데이터 전송하기 (1) | 2023.09.25 |
UTC , GMT, Unix Time 이란? - javascript Date객체로 확인하기 (0) | 2023.09.23 |