유틸리티

Unix 타임스탬프란? 날짜 변환 방법과 개발 활용법

서버 로그를 열었더니 시간이 1709251200으로 찍혀 있다. 2024년 몇 월 며칠인지 이 숫자만 봐서는 알 수가 없다. 이게 Unix 타임스탬프다. 개발을 하면 매일 마주치는데, 원리를 모르면 매번 검색하게 된다.

Unix 타임스탬프가 뭔가

1970년 1월 1일 00:00:00 UTC(Epoch)부터 경과한 초 단위 숫자다. 이 기준점을 Epoch라고 부른다.

  • 0 = 1970년 1월 1일 00:00:00 UTC
  • 86400 = 1970년 1월 2일 (하루 = 60 × 60 × 24초)
  • 1709251200 = 2024년 3월 1일 00:00:00 UTC

시간대(timezone)가 없는 순수한 숫자이기 때문에 전 세계 어디서든 같은 타임스탬프는 같은 순간을 가리킨다. 이 점이 개발에서 타임스탬프를 선호하는 핵심 이유다.

왜 날짜 대신 숫자를 쓰나

시간대 혼동 방지
"2026-03-01 09:00"이 한국 시간인지 미국 시간인지 모호하다. 타임스탬프는 절대 시각이라 오해가 없다.
비교와 정렬이 쉽다
두 시각의 선후를 판단할 때 숫자 크기만 비교하면 된다. 날짜 문자열을 파싱할 필요가 없다.
저장 공간이 작다
"2026-03-01T09:00:00+09:00" 같은 문자열보다 정수 하나가 훨씬 가볍다.
연산이 간단하다
3일 후 = 타임스탬프 + 259200 (86400 × 3). 날짜 라이브러리 없이도 계산이 된다.

초 vs 밀리초, 어떻게 구분하나

같은 시각이라도 단위에 따라 자릿수가 다르다.

단위자릿수예시
초(seconds)10자리1709251200
밀리초(milliseconds)13자리1709251200000

JavaScript의 Date.now()는 밀리초를 반환하고, Python의 time.time()은 초 단위(소수점 포함)를 반환한다. API 문서에서 타임스탬프 단위를 반드시 확인해야 한다.

변환하는 방법

타임스탬프 변환기에서 숫자를 입력하면 로컬 시간, UTC, ISO 8601 형식 세 가지로 변환된다. 반대로 날짜와 시간을 선택하면 초/밀리초 타임스탬프가 나온다. 현재 시각의 타임스탬프는 화면 상단에 실시간으로 갱신되면서 표시된다.

코드로 변환하기

// JavaScript
new Date(1709251200 * 1000).toISOString()
// → "2024-03-01T00:00:00.000Z"

// Python
from datetime import datetime
datetime.utcfromtimestamp(1709251200)
// → 2024-03-01 00:00:00
참고 2038년 1월 19일에 32비트 시스템의 타임스탬프가 오버플로우된다(2³¹ - 1 = 2,147,483,647). Y2K38 문제라고 불리며, 64비트 시스템에서는 해당하지 않는다. 대부분의 현대 시스템은 이미 64비트로 전환됐다.

타임스탬프는 개발자가 시간을 다루는 가장 기본적인 방법이다. 숫자 하나로 전 세계 어디서든 같은 시각을 가리킬 수 있다는 점이 이 단순한 체계의 장점이다.