유틸리티

Unix 타임스탬프 변환, 숫자를 날짜로 바꾸는 법

서버 로그를 열었더니 날짜 대신 1709251800 같은 10자리 숫자가 적혀 있다. 이게 언제인지 감이 안 온다. Unix 타임스탬프를 모르면 로그 분석의 첫 단계부터 막히게 된다.

Unix 타임스탬프란

1970년 1월 1일 00:00:00 UTC부터 현재까지 경과한 초(seconds)를 하나의 숫자로 나타낸 것이다. 컴퓨터 시스템 내부에서 시간을 저장하고 비교하는 데 가장 많이 쓰이는 형식이다.

  • 0 = 1970-01-01 00:00:00 UTC
  • 1000000000 = 2001-09-09 01:46:40 UTC
  • 1709251800 = 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비트 전환을 검토해둘 만하다.