서버 로그에 1709251200이라는 숫자가 찍혀 있다. 이게 오류가 발생한 시각인데, 눈으로 봐서는 몇 월 며칠인지 전혀 알 수 없다. 이 숫자가 Unix 타임스탬프다.
Unix 타임스탬프란
1970년 1월 1일 00:00:00 UTC부터 경과한 초(秒) 수를 숫자로 표현한 것이다. 이 기준 시점을 Epoch라고 부른다. 예를 들어 1709251200은 2024년 3월 1일 00:00:00 UTC를 뜻한다.
- 왜 숫자로 저장하나
- "2024-03-01 09:00:00"같은 문자열보다 숫자 하나가 저장, 비교, 정렬에서 훨씬 빠르다. 타임존 문제도 없다. UTC 기준 숫자 하나면 전 세계 어디서든 같은 시점을 가리킨다.
- 초 vs 밀리초
- 10자리 숫자는 초 단위(Unix Timestamp), 13자리 숫자는 밀리초 단위다. JavaScript의
Date.now()는 밀리초를 반환한다.
변환 예시
| 타임스탬프 | 날짜 (KST) | 비고 |
|---|---|---|
| 0 | 1970-01-01 09:00:00 | Epoch 기준점 |
| 1000000000 | 2001-09-09 10:46:40 | 10억 초 |
| 1709251200 | 2024-03-01 09:00:00 | - |
| 1772438400 | 2026-03-01 09:00:00 | - |
참고 KST(한국 표준시)는 UTC+9다. 같은 타임스탬프라도 서울에서 보면 UTC보다 9시간 앞선 시각으로 표시된다.
타임스탬프 변환하는 법
타임스탬프 변환기에 숫자를 넣으면 로컬 시간, UTC, ISO 8601 형식으로 한 번에 나온다. 반대로 날짜를 입력해서 타임스탬프를 구하는 것도 된다. 현재 시각의 타임스탬프도 실시간으로 표시되니까 복사해서 바로 쓸 수 있다.
개발에서 자주 쓰이는 곳
- 로그 분석: 오류 발생 시각을 사람이 읽을 수 있는 날짜로 변환
- API 응답: created_at, updated_at 필드가 타임스탬프로 내려올 때
- 캐시 만료: TTL(Time To Live)을 초 단위로 설정
- JWT 토큰: exp(만료 시간) 클레임이 타임스탬프 형식
- 데이터베이스: 레코드 생성·수정 시각 저장
타임스탬프는 시간대에 독립적이라서 글로벌 서비스에서 특히 유용하다. 서울과 뉴욕의 사용자가 같은 타임스탬프를 보면 각자의 로컬 시간으로 해석하면 된다.