SomeeLab.tools

Unix 타임스탬프 변환기

Unix 타임스탬프를 사람이 읽는 날짜로, 날짜를 타임스탬프로 바꿉니다. 초·밀리초와 현지 시각·UTC를 함께 보여줍니다. 가입 없이 브라우저에서 바로 돌아갑니다.

지금
밀리초

초인가 밀리초인가

Unix 타임스탬프는 1970년 1월 1일 0시 UTC부터 흐른 시간입니다. 문제는 이 값을 초로 세는 곳과 밀리초로 세는 곳이 섞여 있다는 점입니다.

  • — 유닉스 계열 명령, PostgreSQL과 MySQL의 시간 함수, JWT의 exp·iat, 대부분의 REST API
  • 밀리초 — 자바스크립트의 Date.now(), 자바의 System.currentTimeMillis(), 여러 로그 수집 도구

단위를 헷갈리면 1970년 1월 어느 날이 나오거나(밀리초를 초로 읽음) 서기 5만 년대가 나옵니다(초를 밀리초로 읽음). 이 도구는 값의 크기로 단위를 짐작해 어느 쪽으로 읽었는지 함께 표시하니, 결과가 이상하면 그 표시부터 확인하세요.

시간대 함정

타임스탬프 자체에는 시간대가 없습니다. 어느 순간을 가리키는 숫자 하나일 뿐이고, 시간대는 그 숫자를 사람이 읽는 글자로 바꿀 때 붙습니다. 그래서 같은 값이 서울에서는 오후 4시, 런던에서는 오전 7시로 보입니다.

버그 제보에 “오후 3시에 실패했습니다”라고만 적혀 있으면 어느 시간대인지 알 수 없습니다. 로그에는 타임스탬프나 오프셋이 붙은 ISO 8601 문자열을 남기고, 사람이 읽는 시각은 화면에서만 만드세요.

2038년 문제

타임스탬프를 32비트 부호 있는 정수에 담으면 2038년 1월 19일에 넘칩니다. 그 순간 값이 음수로 돌아 1901년이 됩니다. 요즘 언어와 데이터베이스는 대부분 64비트를 쓰지만, 오래된 임베디드 장비나 옛 C 코드를 유지보수 중이라면 저장 폭을 한 번 확인해 둘 만합니다.

음수와 0

음수는 1970년 이전을 가리킵니다. 생년월일처럼 오래된 날짜를 타임스탬프로 저장하면 이 값이 나오는데, 라이브러리 중에는 음수를 제대로 다루지 못하는 것도 있습니다.

0은 1970년 1월 1일 0시 UTC입니다. 데이터에서 이 값이 보인다면 대개 실제 시각이 아니라 초기화되지 않은 필드입니다.