Unix 타임스탬프 변환기
DB에서 created_at 컬럼을 열었더니 1719800000 같은 숫자만 잔뜩 찍혀 있어서, 이게 대체 언제인지 매번 따로 확인해 본 적 있으실 겁니다. 시간을 사람이 읽는 날짜 대신 epoch 정수로 저장하면 정렬도 빠르고 타임존 논쟁도 피할 수 있어서 자주 쓰는데, 정작 눈으로는 아무 의미가 없죠. Unix 타임스탬프 변환기는 이 숫자를 붙여넣으면 곧바로 사람이 읽는 날짜로 풀어 주고, 반대로 날짜를 골라 타임스탬프로 되돌려 주는 도구입니다.
로그와 DB를 오가며 1719800000을 계산기에 넣거나 온라인 변환기를 다시 여는 왕복이 지겨워서, 붙여넣으면 바로 보이게 만들어 제가 쓰고 있습니다.
사용 방법
타임스탬프를 날짜로
-
타임스탬프 → 날짜 탭에서 입력창에 숫자를 붙여넣습니다. 초 단위인지 밀리초 단위인지 고를 필요 없이, 자릿수를 보고 자동으로 판별해 "초(seconds) 단위 타임스탬프로 인식"처럼 어떻게 읽었는지 알려 줍니다.

-
입력 즉시 아래 결과 카드에 한국어 날짜, ISO 8601, UTC, 그리고 초·밀리초 값이 함께 나옵니다. 각 줄을 클릭하면 그 값이 복사되고, 상단 배지로 "3개월 전" 같은 상대 시간도 보여 줍니다.

-
반대로 필요할 땐 날짜 → 타임스탬프 탭에서 날짜와 시간을 고르면 초·밀리초 타임스탬프가 계산됩니다. 현재 시간, 오늘 자정 버튼으로 자주 쓰는 값을 한 번에 채울 수 있습니다.

맨 위 카드에는 지금 이 순간의 초·밀리초 타임스탬프가 실시간으로 흐르고 있어서, 테스트 데이터에 넣을 "현재 시각" 값이 필요하면 그대로 클릭해 복사하면 됩니다.
정확하진 않아도 감으로 대충 환산하기
Unix 타임스탬프는 1970-01-01 00:00:00 UTC를 0으로 두고, 그 뒤로 흐른 초를 그냥 계속 더한 숫자입니다. 그래서 값이 클수록 최근 시각이고, 원리만 알면 변환기를 안 켜도 대강의 시대는 감으로 잡힙니다.
가장 먼저 볼 건 자릿수입니다. 10자리면 초 단위, 13자리면 밀리초 단위라고 보면 거의 맞습니다. 밀리초는 초에 1000을 곱한 값이라 자릿수가 세 칸 더 붙기 때문입니다. 이 변환기도 같은 기준으로, 대략 100억(9999999999) 이하 숫자는 초, 그보다 크면 밀리초로 읽습니다.
앞자리로 연대도 어림잡을 수 있습니다. 10자리 초 값이 17로 시작하면 대략 2020년대, 16으로 시작하면 2020년 안팎, 15로 시작하면 2017~2018년 무렵입니다. 로그에서 17xxxxxxxx를 봤다면 "아, 요즘 데이터구나" 정도는 바로 판단이 서죠. 물론 정확한 날짜와 시각은 변환기로 확인해야 합니다. 이 어림은 어느 로그를 먼저 열어 볼지 고를 때 쓰는 용도입니다.
초와 밀리초를 헷갈리면 생기는 일
같은 시각이라도 초로 저장하느냐 밀리초로 저장하느냐에 따라 값이 정확히 1000배 차이 납니다. 이 단위를 착각하면 시간이 엉뚱한 곳으로 튀는데, 방향이 둘 다 고약합니다.
밀리초 값 1719800000000을 초로 착각해 그대로 해석하면, 1000배 먼 미래로 날아가 수만 년 뒤가 됩니다. 반대로 초 값 1719800000을 밀리초로 읽으면 0에 훨씬 가까워져서 1970년 언저리, 즉 epoch 시작점 근처로 주저앉습니다. "가입일이 1970년으로 찍힌다"거나 "만료일이 말도 안 되는 미래다" 같은 버그는 대부분 이 단위 착각이 원인입니다.
JavaScript를 쓴다면 함정이 하나 더 있습니다. Date 객체는 밀리초를 기준으로 동작해서 new Date(1719800000)에 초 값을 넣으면 조용히 1970년으로 해석해 버립니다. 서버에서 온 초 단위 값을 그대로 넘긴 게 원인이라, 에러도 안 나고 값만 틀리죠. 이 도구는 자릿수로 단위를 먼저 판별한 뒤 어느 쪽으로 읽었는지 화면에 표시하기 때문에, 붙여넣는 순간 "이건 밀리초로 읽혔네"를 눈으로 확인하고 넘어갈 수 있습니다.