서버 로그에 1709251200이라는 숫자가 찍혀 있다. 이게 언제인지 바로 알 수 없다. Unix 타임스탬프는 사람이 읽을 수 없는 형식이라서, 날짜로 변환하지 않으면 로그 분석이 안 된다.
Unix 타임스탬프가 뭔가
1970년 1월 1일 00:00:00 UTC를 기준점(Epoch)으로, 거기서부터 경과한 초(秒) 수를 숫자 하나로 표현한 것이다. 시간대, 날짜 형식, 언어와 무관하게 전 세계에서 동일한 시점을 가리킨다.
예시 타임스탬프 1709251200 = 2024년 3월 1일 00:00:00 UTC = 한국 시간 2024년 3월 1일 09:00:00
왜 이 방식을 쓰나
- 시간대 독립
- "2024-03-01 09:00"은 한국인지 미국인지에 따라 다른 시점이다. 타임스탬프
1709251200은 전 세계에서 같은 순간을 가리킨다. - 비교·연산 편의
- 두 시점의 차이를 구하려면 숫자를 빼면 된다. 1709337600 - 1709251200 = 86400(초) = 정확히 24시간.
- 저장 효율
- "2024-03-01T00:00:00+09:00"은 25바이트지만,
1709251200은 4바이트(32비트 정수)면 된다.
초 단위와 밀리초 단위 구분
같은 타임스탬프라도 시스템에 따라 단위가 다르다.
| 단위 | 자릿수 | 사용하는 곳 |
|---|---|---|
| 초(s) | 10자리 | Unix/Linux, PHP, Python |
| 밀리초(ms) | 13자리 | JavaScript, Java, Elasticsearch |
1709251200000처럼 13자리면 밀리초, 1709251200처럼 10자리면 초 단위다. 단위를 잘못 넣으면 1970년이나 수만 년 후 날짜가 나오니까 자릿수를 먼저 확인해야 한다.
로그에 찍힌 타임스탬프를 해석하거나, 특정 날짜를 API 파라미터로 넘기기 위해 타임스탬프로 바꿔야 할 때 타임스탬프 변환기가 빠르다. 초와 밀리초를 선택할 수 있고, 로컬 시간, UTC, ISO 8601 세 가지 형식으로 동시에 보여줘서 시간대 혼동 없이 확인할 수 있다.