Unix Timestamp ↔ 날짜·시간 실시간 변환 · 초/밀리초 자동 감지 · KST/UTC/EST/PST 지원
Unix 타임스탬프(Unix timestamp)는 1970년 1월 1일 00:00:00 UTC(협정 세계시)를 기준으로 경과한 초(seconds) 수를 나타내는 정수값입니다. 이 기준 시점을 Unix Epoch 또는 Unix Origin이라고 부릅니다. 예를 들어 타임스탬프 값 0은 정확히 1970-01-01 00:00:00 UTC를 의미하고, 1000000000은 2001년 9월 9일 01:46:40 UTC입니다.
타임스탬프는 특정 시점을 숫자 하나로 표현하기 때문에, 다양한 로케일·언어·포맷 차이에 상관없이 전 세계 어느 시스템 간에도 동일한 시간을 정확히 전달할 수 있습니다. 이것이 웹 개발과 데이터베이스, 로그 기록에서 타임스탬프가 표준처럼 쓰이는 이유입니다.
소프트웨어를 개발하다 보면 시간 데이터를 다루는 일이 매우 빈번합니다. 다음과 같은 상황에서 타임스탬프는 필수 도구가 됩니다.
iat)과 만료 시각(exp)이 모두 Unix 타임스탬프입니다.expires 속성도 타임스탬프 기반입니다.// 현재 시각을 타임스탬프로 const nowSec = Math.floor(Date.now() / 1000); // 초 const nowMs = Date.now(); // 밀리초 // 타임스탬프 → Date 객체 const d = new Date(nowSec * 1000); // 반드시 밀리초로 변환 console.log(d.toISOString()); // "2026-05-17T00:00:00.000Z" // KST 포맷 출력 const kst = d.toLocaleString('ko-KR', { timeZone: 'Asia/Seoul' });
import time, datetime, pytz # 현재 타임스탬프 now_ts = int(time.time()) # 타임스탬프 → datetime (UTC) dt_utc = datetime.datetime.utcfromtimestamp(now_ts) # KST로 변환 kst = pytz.timezone('Asia/Seoul') dt_kst = datetime.datetime.fromtimestamp(now_ts, tz=kst) print(dt_kst.strftime('%Y-%m-%d %H:%M:%S'))
-- MySQL: 타임스탬프 → 날짜 SELECT FROM_UNIXTIME(1747440000); -- MySQL: 날짜 → 타임스탬프 SELECT UNIX_TIMESTAMP('2026-05-17 00:00:00'); -- PostgreSQL SELECT TO_TIMESTAMP(1747440000); SELECT EXTRACT(EPOCH FROM NOW())::BIGINT;
타임스탬프를 다루는 개발자가 가장 많이 겪는 실수는 초(seconds)와 밀리초(milliseconds)를 혼동하는 것입니다.
| 단위 | 자릿수 | 예시 | 언어/플랫폼 |
|---|---|---|---|
| 초 (seconds) | 10자리 | 1747440000 | Python time.time(), PHP time(), Unix shell |
| 밀리초 (ms) | 13자리 | 1747440000000 | JavaScript Date.now(), Java System.currentTimeMillis() |
JavaScript에서 new Date(1747440000)을 호출하면 1970년 1월 21일이 반환됩니다. 반드시 new Date(1747440000 * 1000)처럼 1000을 곱해야 2026년 날짜가 나옵니다. 본 도구는 자릿수(10자리 → 초, 13자리 → 밀리초)를 자동 감지하여 변환합니다.
Unix 타임스탬프는 항상 UTC 기준입니다. 한국 표준시 KST(Korea Standard Time)는 UTC보다 9시간 빠르므로, 같은 타임스탬프라도 표현하는 방식에 따라 날짜가 달라질 수 있습니다.
예를 들어 2026-05-17 00:00:00 UTC는 KST로 2026-05-17 09:00:00이지만, 2026-05-17 00:00:00 KST는 UTC로 2026-05-16 15:00:00입니다. 서버와 클라이언트가 서로 다른 타임존을 가정하면 9시간 차이로 인해 날짜 오류가 발생할 수 있으니 주의하세요.
가장 안전한 방법은 서버에서는 UTC로 저장하고, UI에서는 사용자 타임존으로 변환하는 것입니다. JavaScript의 Intl.DateTimeFormat API나 Python의 pytz 라이브러리를 활용하면 타임존 변환을 쉽게 처리할 수 있습니다.
ISO 8601은 날짜와 시간을 표기하는 국제 표준입니다. API 응답에서 가장 많이 볼 수 있는 형식으로, 다음과 같은 규칙을 따릅니다.
| 형식 | 예시 | 설명 |
|---|---|---|
| 기본 | 2026-05-17 | 날짜만 |
| 시간 포함 | 2026-05-17T09:00:00 | 로컬 시간 |
| UTC 명시 | 2026-05-17T00:00:00Z | Z = UTC |
| 오프셋 포함 | 2026-05-17T09:00:00+09:00 | KST 명시 |