Unix 타임스탬프 이해하기: 개발자를 위한 완전 가이드

2026-05-20 · Development

Unix 타임스탬프란?

Unix 타임스탬프는 초의 누적 합계로 시간을 추적하는 방식입니다. 1970년 1월 1일 00:00:00 UTC — "Unix 에포크"라고 알려진 기준점으로부터 경과한 초의 수를 셉니다.

예를 들어, Unix 타임스탬프 1719000000은 특정 시점을 나타냅니다: 2024년 6월 22일 약 00:00 UTC. 매초 이 숫자가 1씩 증가합니다.

왜 Unix 타임스탬프를 사용할까?

Unix 타임스탬프는 소프트웨어 개발에서 여러 이유로 널리 사용됩니다:

  • 시간대 독립성: 타임스탬프는 전 세계 어디에서나 동일한 순간을 나타냅니다. EST, PST, JST인지에 대한 모호함이 없습니다 — 항상 UTC 기준입니다.
  • 쉬운 비교: 두 타임스탬프 비교는 단순한 숫자 비교입니다. 타임스탬프 A가 타임스탬프 B보다 크면 사건 A가 사건 B 이후에 발생했습니다.
  • 효율적인 저장: 10자리 정수를 저장하는 것은 "2024-06-22T00:00:00Z" 같은 형식화된 날짜 문자열을 저장하는 것보다 훨씬 공간 효율적입니다.
  • 수학 연산: 타임스탬프에 86,400초를 더하면 정확히 24시간 후가 됩니다. 월 경계나 윤년을 고려할 필요가 없습니다.

초 vs 밀리초

Unix 타임스탬프에는 두 가지 일반적인 형식이 있습니다:

  • 초 (10자리): 원래 Unix 타임스탬프 형식. 예: 1719000000
  • 밀리초 (13자리): JavaScript와 많은 최신 API에서 더 높은 정밀도를 위해 사용됩니다. 예: 1719000000000

이 두 형식을 혼동하는 것은 흔한 버그 원인입니다. 초를 기대하는 함수에 밀리초 타임스탬프를 전달하면 날짜가 완전히 잘못됩니다 (약 50,000년 후).

다른 언어에서 타임스탬프 다루기

JavaScript

const now = Date.now(); // 밀리초
const seconds = Math.floor(Date.now() / 1000);
const date = new Date(seconds * 1000);

Python

import time
seconds = int(time.time())
from datetime import datetime
dt = datetime.fromtimestamp(seconds)

PHP

$timestamp = time(); // 초
$date = date('Y-m-d H:i:s', $timestamp);

MySQL

SELECT UNIX_TIMESTAMP(); -- 현재 타임스탬프
SELECT FROM_UNIXTIME(1719000000); -- 날짜로 변환

흔한 함정

  • 2038년 문제: 32비트 부호 있는 정수는 2038년 1월 19일에 오버플로됩니다. 32비트 타임스탬프를 사용하는 시스템은 64비트 정수로 마이그레이션해야 합니다.
  • 윤초: Unix 타임스탬프는 윤초를 고려하지 않습니다. 대부분의 시스템은 이를 무시하므로 원자 시간과 약간의 차이가 발생할 수 있습니다.
  • 시간대 표시: Unix 타임스탬프는 UTC라는 것을 항상 기억하세요. 사용자에게 표시하려면 현지 시간대로 변환해야 합니다.

TryQuickToolBox 타임스탬프 변환기

무료 도구는 Unix 타임스탬프(초 및 밀리초), ISO 8601 날짜, UTC 시간, 현지 시간 간에 변환합니다. 자동 감지로 어떤 형식이든 붙여넣고 즉시 결과를 얻을 수 있습니다. 결과를 클릭하면 클립보드에 복사됩니다.

지금 타임스탬프 변환하기 →