JavaScript Date 플레이그라운드
JavaScript Date 표현식을 입력하고 모든 출력 형식과 속성을 실시간으로 탐색하세요 — toISOString, toString, getTime, getFullYear 등.
JavaScript Expression
Type any expression that returns a Date or number.
JavaScript의 Date 객체
JavaScript에 내장된 Date 객체는 시간을 내부적으로 Unix epoch(1970년 1월 1일 00:00:00 UTC) 이후의 밀리초 수로 저장합니다. 모든 Date 인스턴스는 결국 이 하나의 정수일 뿐입니다. toISOString(), toString(), toLocaleString() 같은 여러 메서드는 같은 기반 값을 표시하는 서로 다른 방법입니다.
JavaScript 날짜를 다룰 때 흔한 함정
JavaScript Date의 몇몇 동작은 숙련된 개발자도 걸려 넘어지게 합니다:
- 월은 0부터 시작: 1월은 0, 12월은 11 — 표시할 때는 항상 1을 더하라
- new Date('2024-01-01')은 UTC 자정으로 파싱되고, new Date('2024/01/01')은 현지 자정으로 파싱된다
- new Date(2024, 0, 1)은 현지 시간으로 2024년 1월 1일을 만든다(월은 0부터 시작)
- Date.now()는 밀리초를 반환하고, Math.floor(Date.now() / 1000)은 Unix 초를 준다
- 86400000ms를 더해 날짜를 더하지 마라 — DST 때문에 잘못된 시각에 떨어질 수 있다
JavaScript에서 시간대 다루기
JavaScript의 Date 객체에는 시간대 속성이 없습니다 — 항상 UTC로 저장됩니다. 시간대 변환은 표시 시점에 Intl.DateTimeFormat API로 처리합니다.
- new Intl.DateTimeFormat('en-US', { timeZone: 'Asia/Tokyo', dateStyle: 'full', timeStyle: 'long' }).format(date)
- date.toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' })
- new Intl.DateTimeFormat('en-CA', { timeZone: tz }).formatToParts(date) — 사용자 정의 형식을 위해 개별 구성 요소를 반환
플레이그라운드 출력 읽는 법
플레이그라운드는 같은 Date 값을 여러 보기로 보여 주어 단위와 시간대 실수를 빠르게 잡을 수 있게 합니다. 먼저 getTime을 Unix 초와 비교하고, 그다음 ISO와 현지 문자열을 확인하세요. ISO 날짜는 맞는데 현지 문자열이 달라 보이면, 타임스탬프는 옳고 표시 시간대만 바뀐 것입니다.
- getTime은 항상 Unix epoch 이후의 밀리초
- Unix 초는 getTime을 1000으로 나누어 내림한 값
- toISOString은 항상 끝에 Z를 붙여 UTC를 표시
- toString과 toLocaleString은 옵션으로 덮어쓰지 않는 한 브라우저의 현지 시간대로 표시