Unix 타임스탬프란 무엇인가?
컴퓨터가 날짜와 시간을 저장하는 방법은 우리 인간이 달력을 읽는 방식과 전혀 다릅니다. 소프트웨어 세계에서 가장 보편적으로 사용되는 시간 표현 방식은 바로 Unix 타임스탬프(Unix Timestamp)입니다. 이는 1970년 1월 1일 00:00:00 UTC(협정 세계시)를 기준으로 경과한 초(second) 수를 숫자로 나타낸 것입니다.
이 기준 시점은 Unix Epoch 또는 Epoch Time이라 부르며, 운영체제 Unix에서 유래했습니다. 예를 들어 1754352000이라는 숫자는 "Unix Epoch로부터 1,754,352,000초 후"를 의미하며, 이를 날짜로 변환하면 2025년 8월 5일 00:00:00 UTC가 됩니다.
타임스탬프는 언어·시간대·로케일에 무관하게 전 세계 어디서나 같은 숫자로 표현되기 때문에, 데이터베이스 저장, API 통신, 로그 기록, 이벤트 순서 정렬 등 다양한 곳에 활용됩니다.
타임스탬프의 단위: 초(s) vs 밀리초(ms)
실무에서 가장 많이 혼동되는 개념 중 하나가 바로 초 단위 타임스탬프와 밀리초 단위 타임스탬프의 차이입니다.
| 구분 | 설명 | 자릿수(2026년 기준) | 예시 |
|---|---|---|---|
| 초(Seconds) | Unix 표준 단위 | 10자리 | 1754352000 |
| 밀리초(Milliseconds) | JavaScript, Java 등에서 주로 사용 | 13자리 | 1754352000000 |
| 마이크로초(Microseconds) | 고정밀 측정, 데이터베이스 내부 등 | 16자리 | 1754352000000000 |
| 나노초(Nanoseconds) | Go 언어, 운영체제 커널 등 | 19자리 | 1754352000000000000 |
실무 팁: 타임스탬프 값의 자릿수를 보고 단위를 빠르게 판별할 수 있습니다. 10자리면 초, 13자리면 밀리초입니다. API 문서나 DB 스키마에서 단위가 명시되지 않은 경우에는 이 규칙을 적용하면 대부분 해결됩니다.
HMApps Unix 타임스탬프 변환기 사용법
HMApps Unix 타임스탬프 변환기는 복잡한 계산 없이 타임스탬프와 날짜를 즉시 상호 변환해주는 도구입니다. 설치나 회원가입 없이 브라우저에서 바로 사용할 수 있습니다.
기능 1: 현재 타임스탬프 확인
도구를 열면 현재 Unix 타임스탬프가 초 단위와 밀리초 단위로 실시간 표시됩니다. API 요청 시간 기록, 캐시 키 생성, 이벤트 로깅 시 바로 복사해서 사용할 수 있습니다.
기능 2: 타임스탬프 → 날짜 변환
숫자로 된 타임스탬프를 입력하면 사람이 읽기 쉬운 날짜·시간 형식으로 즉시 변환합니다. 예를 들어 1700000000을 입력하면 2023-11-14 22:13:20 UTC로 변환됩니다.
기능 3: 날짜 → 타임스탬프 변환
날짜와 시간을 직접 선택하거나 입력하면 해당 시점의 Unix 타임스탬프를 계산해줍니다. 계약 만료일, 이벤트 시작 시각 등을 코드에 하드코딩해야 할 때 유용합니다.
기능 4: 시간대(Timezone) 지원
UTC 기준으로 변환할지, 로컬 시간(한국 기준 KST = UTC+9)으로 변환할지 선택할 수 있습니다. 글로벌 서비스를 개발하거나 해외 파트너와 API를 연동할 때 시간대 혼동을 방지할 수 있습니다.
개발 현장에서 타임스탬프 다루기: 언어별 코드 예제
각 언어·환경마다 타임스탬프를 다루는 방법이 다릅니다. 아래 코드 스니펫은 복사해서 바로 사용할 수 있습니다.
JavaScript / TypeScript
// 현재 타임스탬프 (밀리초)
const nowMs = Date.now() // 예: 1754352000000
// 현재 타임스탬프 (초)
const nowSec = Math.floor(Date.now() / 1000) // 예: 1754352000
// 타임스탬프 → Date 객체
const date = new Date(1754352000 * 1000)
console.log(date.toISOString()) // "2025-08-05T00:00:00.000Z"
// Date 객체 → 타임스탬프 (초)
const ts = Math.floor(new Date('2025-08-05').getTime() / 1000)
console.log(ts) // 1754352000Python
import time
from datetime import datetime, timezone
# 현재 타임스탬프 (초, float)
now = time.time() # 예: 1754352000.123
# 현재 타임스탬프 (정수)
now_int = int(time.time())
# 타임스탬프 → datetime (UTC)
dt = datetime.fromtimestamp(1754352000, tz=timezone.utc)
print(dt) # 2025-08-05 00:00:00+00:00
# datetime → 타임스탬프
dt2 = datetime(2025, 8, 5, tzinfo=timezone.utc)
ts = int(dt2.timestamp())
print(ts) # 1754352000Java
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
// 현재 타임스탬프 (초)
long nowSec = Instant.now().getEpochSecond();
// 현재 타임스탬프 (밀리초)
long nowMs = System.currentTimeMillis();
// 타임스탬프 → Instant
Instant instant = Instant.ofEpochSecond(1754352000L);
// Instant → 타임스탬프
LocalDateTime ldt = LocalDateTime.of(2025, 8, 5, 0, 0, 0);
long ts = ldt.toEpochSecond(ZoneOffset.UTC);
System.out.println(ts); // 1754352000SQL (MySQL / PostgreSQL)
-- 현재 타임스탬프
SELECT UNIX_TIMESTAMP(); -- MySQL
SELECT EXTRACT(EPOCH FROM NOW()); -- PostgreSQL
-- 타임스탬프 → 날짜 (MySQL)
SELECT FROM_UNIXTIME(1754352000);
-- 결과: '2025-08-05 09:00:00' (KST, 서버 시간대에 따라 다름)
-- 타임스탬프 → 날짜 (PostgreSQL)
SELECT TO_TIMESTAMP(1754352000);
-- 날짜 → 타임스탬프 (MySQL)
SELECT UNIX_TIMESTAMP('2025-08-05 00:00:00');타임스탬프 활용 실전 사례
사례 1: API 응답 캐싱
외부 API를 호출할 때마다 비용이 발생하거나 속도가 느린 경우, 응답 데이터와 함께 타임스탬프를 저장해두고 일정 시간(TTL)이 지나지 않았으면 캐시된 데이터를 반환하는 패턴을 많이 사용합니다.