서버 로그에 1709251200이라는 숫자만 찍혀 있다. 이게 날짜라는 건 알겠는데, 대체 몇 월 며칠 몇 시인지 바로 읽히지 않는다. 이런 숫자가 유닉스 타임스탬프(Unix Timestamp)다.
유닉스 타임스탬프란
1970년 1월 1일 00:00:00 UTC(협정 세계시)를 기준으로, 그 시점부터 몇 초가 지났는지를 숫자로 나타낸 것이다. 전 세계 서버가 시간대에 상관없이 동일한 기준점을 쓰기 때문에, 시간 데이터를 주고받을 때 혼선이 없다.
예시1709251200= 2024년 3월 1일 09:00:00 (한국 시간)
약 17억이 넘는 숫자인데, 2026년 현재 약 17.7억 정도다.
타임스탬프를 날짜로 바꾸기
타임스탬프 변환기에 숫자를 입력하면 날짜가 세 가지 형식으로 동시에 나온다.
| 형식 | 출력 예시 | 용도 |
|---|---|---|
| 로컬 시간 | 2024년 3월 1일 오전 9시 | 한국 시간대 기준 확인 |
| UTC | Fri, 01 Mar 2024 00:00:00 GMT | 서버 간 통신 기준 |
| ISO 8601 | 2024-03-01T00:00:00.000Z | API 표준 형식 |
초(seconds) 단위와 밀리초(milliseconds) 단위를 선택할 수 있다. JavaScript의 Date.now()는 밀리초를 반환하고, 대부분의 서버 로그는 초 단위를 쓴다. 자릿수로 구분하면 되는데, 10자리면 초, 13자리면 밀리초다.
날짜를 타임스탬프로 바꾸기
반대로 특정 날짜를 타임스탬프 숫자로 변환해야 할 때도 있다. API에서 날짜 범위 조건을 타임스탬프로 넣어야 하거나, 스케줄러에 특정 시각을 등록할 때가 그렇다.
년, 월, 일, 시간을 입력하면 초 단위와 밀리초 단위 타임스탬프가 동시에 나온다. 현재 시각의 타임스탬프는 페이지 상단에서 실시간으로 갱신되고 있어서, 복사 버튼 하나로 바로 가져갈 수 있다.
2038년 문제란?
32비트 정수로 타임스탬프를 저장하는 시스템은 2038년 1월 19일에 오버플로우가 발생한다. 대부분의 현대 시스템은 64비트로 전환했지만, 레거시 시스템에서는 주의가 필요하다.
로그 분석이나 API 디버깅 중에 타임스탬프를 만날 때마다 코드를 짜서 변환하는 건 번거롭다. 숫자 하나 붙여넣으면 바로 날짜가 보인다.