AI VIDEO BRIEFING
자바스크립트 날짜와 시간 완전정복: 타임스탬프·UTC·시간대 기초
프로덕션에서 하루 혹은 몇 시간씩 어긋나는 날짜 버그의 원인을 근본부터 짚는다. 에폭 시간, 타임스탬프와 시간대의 차이, UTC의 의미까지 자바스크립트 날짜 처리의 기초를 정리했다.

핵심 메시지
쉽게 이해하기
자바스크립트를 조금이라도 다뤄본 개발자라면 날짜·시간 처리에서 한 번쯤 좌절해봤을 것이다. 강의는 이 주제가 표면적으로는 단순해 보이지만, 애플리케이션을 프로덕션에 배포하고 지구 반대편 사용자가 접속하는 순간 하루 혹은 몇 시간씩 어긋나거나 2월 29일에 갑자기 오류가 나는 등 예측 못 한 버그가 터진다고 설명한다. 20년 이상 경력의 소프트웨어 엔지니어가 진행하는 이 강의는 API 사용법을 넘어, 대부분의 개발자가 놓치는 '왜(why)'와 근본 원리를 다룬다.
핵심 문제는 '시간은 상대적'이라는 점이다. 지구는 둥글고 태양은 각 지역에 다른 시각에 비추기 때문에, 지구상 모든 사람이 동시에 동의할 수 있는 단일한 '지금(now)' 순간은 존재하지 않는다. 강의는 뉴욕 사용자가 내일 오전 9시에 회의를 잡고, 런던 사용자가 수락하고, 도쿄 사용자가 참여하는 캘린더 앱 예시로 이 문제를 설명한다. 각자에게 '오전 9시'와 '내일'이 무엇을 뜻하는지가 달라지는 것이 일상적인 문제라는 것이다.
이 문제를 풀기 위한 기준점이 에폭 시간이다. 자바스크립트는 1970년 1월 1일 0시 0분 0초를 0으로 삼고, 그 기준에서 얼마나 시간이 흘렀는지를 밀리초 단위로 표현한다. 밀리초를 쓰는 이유는 성능 측정이나 애니메이션 프레임처럼 밀리초 단위 연산이 프로그래밍에서 흔하기 때문이다. 1970년이라는 시작점 자체는 유닉스 운영체제가 개발되던 시기와 맞물린, 깊은 의미보다는 단순함에서 비롯된 다소 임의적인 선택이라고 강의는 설명한다.
많은 개발자가 헷갈리는 타임스탬프와 시간대의 차이도 명확히 구분한다. 타임스탬프는 위치와 무관한 절대적 시점으로, 언제나 1970년 1월 1일 0시를 기준으로 밀리초 숫자 하나로 표현된다. 반면 시간대(time zone)는 특정 지역의 시간을 표현하기 위해 인간이 정한 규칙이며, 시간대의 시각을 계산하려면 타임스탬프 값이 필요하다. 즉 타임스탬프 자체에는 시간대가 없다.
여기서 UTC(협정 세계시, Coordinated Universal Time)가 등장한다. 약자가 CUT가 아니라 UTC인 이유는 영어와 프랑스어 표기를 절충해 합의한 결과라고 강의는 소개한다. UTC는 인터넷의 '마스터 클록'으로, 0에서 시작해 계속 똑딱이며 전 세계 타임스탬프의 기준이 된다. 강의는 이후 Intl API를 이용한 전역 포맷팅, 서머타임(일광 절약 시간) 처리, 그리고 앞으로 도입될 Temporal API와 폴리필까지 다룰 예정이라고 예고한다.
주요 인사이트
- 날짜 버그의 대부분은 API를 몰라서가 아니라 '시간은 상대적'이라는 근본 개념을 이해하지 못해 생긴다.
- 타임스탬프(절대적·시간대 없음)와 시간대(지역 규칙)를 분리해서 사고하면 많은 혼란이 사라진다.
- 에폭(1970-01-01)과 밀리초 표현은 논리적 필연이라기보다 유닉스 개발기의 단순한 선택에서 굳어진 관례다.
- UTC를 인터넷의 기준 시계로 두고, 모든 지역 시간을 여기서 파생시키는 것이 안전한 설계의 출발점이다.
- 네이티브 Date 객체의 함정을 넘어 Intl API, 그리고 차세대 Temporal API로의 흐름을 알아두면 미래 대비가 된다.
자주 묻는 질문
자바스크립트 날짜 처리가 왜 그렇게 어렵나요?
표면적으로는 단순해 보이지만, 사용자가 서로 다른 시간대와 기기에서 접속하고 서머타임 같은 규칙이 얽히면 금세 복잡해집니다. 근본 원인은 '시간은 상대적'이어서, 지구상 모두가 동의하는 단일한 '지금'이 없기 때문입니다.
자바스크립트는 시간을 어떻게 표현하나요?
1970년 1월 1일 0시 0분 0초(에폭)를 0 기준점으로 삼아, 그로부터 경과한 시간을 밀리초(ms) 숫자로 표현합니다. 밀리초를 쓰는 이유는 성능 측정이나 애니메이션처럼 밀리초 단위 연산이 흔하기 때문입니다.
타임스탬프와 시간대는 어떻게 다른가요?
타임스탬프는 위치와 무관한 절대적 시점으로 1970년 기준 밀리초 숫자 하나이며 시간대 정보가 없습니다. 시간대는 특정 지역의 시간을 표현하려고 인간이 정한 규칙으로, 그 지역 시각을 계산하려면 타임스탬프가 필요합니다.
UTC는 무엇인가요?
협정 세계시(Coordinated Universal Time)로, 인터넷의 기준 시계 역할을 합니다. 약자가 CUT가 아니라 UTC인 것은 영어·프랑스어 표기를 절충해 합의했기 때문이며, 0에서 시작해 계속 진행되는 전 세계 타임스탬프의 표준입니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗