서버 로그를 열었더니 날짜 대신 1709251800 같은 10자리 숫자가 적혀 있다. 이게 언제인지 감이 안 온다. Unix 타임스탬프를 모르면 로그 분석의 첫 단계부터 막히게 된다.
Unix 타임스탬프란
1970년 1월 1일 00:00:00 UTC부터 현재까지 경과한 초(seconds)를 하나의 숫자로 나타낸 것이다. 컴퓨터 시스템 내부에서 시간을 저장하고 비교하는 데 가장 많이 쓰이는 형식이다.
0= 1970-01-01 00:00:00 UTC1000000000= 2001-09-09 01:46:40 UTC1709251800= 2024-03-01 06:30:00 UTC
13자리 숫자가 나온다면 밀리초(milliseconds) 단위다. JavaScript의 Date.now()가 대표적으로 밀리초 타임스탬프를 반환한다.
타임스탬프가 쓰이는 곳
| 사용처 | 단위 | 예시 |
|---|---|---|
| 서버 로그 | 초(10자리) | nginx, Apache 접속 로그 |
| 데이터베이스 | 초/밀리초 | MySQL UNIX_TIMESTAMP(), MongoDB |
| API 응답 | 초/밀리초 | JSON의 created_at 필드 |
| JavaScript | 밀리초(13자리) | Date.now(), new Date().getTime() |
변환 방법
타임스탬프 변환기에 숫자를 넣으면 로컬 시간, UTC, ISO 8601 세 가지 형식으로 변환된다. 10자리(초)와 13자리(밀리초)를 자동으로 구분하니까 단위를 따로 지정할 필요가 없다.
반대로 날짜와 시간을 입력하면 해당하는 타임스탬프 숫자가 나온다. API 테스트에서 특정 시점의 타임스탬프를 만들어 넣어야 할 때 유용하다.
TIP 페이지 상단에 현재 Unix 타임스탬프가 1초마다 갱신된다. 클릭 한 번으로 복사할 수 있어서 테스트 데이터를 만들 때 편하다.
2038년 1월 19일에 32비트 시스템의 타임스탬프가 오버플로우된다(Y2K38 문제). 아직 시간이 있지만, 레거시 시스템을 운영 중이라면 미리 64비트 전환을 검토해둘 만하다.