유닉스 타임스탬프 변환기
타임스탬프를 사람이 읽을 수 있는 날짜로, 또는 그 반대로 변환합니다 — 초와 밀리초를 자동으로 감지하고, 현지 시간대와 UTC로 함께 표시하며, 현재 타임스탬프도 실시간으로 보여줍니다.
조회수 996회
유효하지 않은 타임스탬프입니다
작동 원리
유닉스 타임스탬프는 1970년 1월 1일 00:00:00 UTC — 에포크(epoch)라고 불리는 고정된 기준점 — 로부터 경과한 초를 정수로 셉니다. 1,784,000,000이라는 숫자는 2026년 7월에 해당하며, 1970년 이후의 모든 초는 시간대, 달력상의 월, 서머타임 개념이 전혀 개입되지 않는 고유한 정수를 갖습니다. 데이터베이스, API, 로그 파일이 시간을 이런 방식으로 저장하는 이유가 바로 여기에 있습니다: 지구 반대편에 있는 두 서버도 같은 순간에 대해 정확히 같은 타임스탬프를 계산하며, 타임스탬프를 숫자로 정렬하는 것은 곧 시간 순서대로 정렬하는 것과 같아서 별도의 날짜 파싱 로직이 필요 없습니다.
타임스탬프를 사람이 읽을 수 있는 날짜로 변환한다는 것은 그 정수를 특정 시간대에 대입해 해석하는 것을 의미합니다: 기저의 순간 자체는 바뀌지 않고, 오직 그것이 표시되는 방식만 달라집니다. 이 도구는 현지 시간대와 UTC를 나란히 보여주므로 불일치를 쉽게 발견할 수 있습니다 — 예를 들어 타임스탬프 1784000000은 2026-07-13 22:13:20 UTC로 표시되며, 이는 UTC+3에서는 2026-07-14 01:13:20이 됩니다. 반대 방향 — 사람이 읽을 수 있는 날짜에서 타임스탬프로 — 도 같은 논리가 역으로 적용됩니다: 이 도구는 입력한 날짜 필드를 선택한 시간대에 속하는 것으로 취급하고, 그에 해당하는 에포크 정수를 계산합니다. 초와 밀리초는 자릿수로 자동 판별되므로 어느 형식을 붙여넣어도 별도의 설정 없이 동작합니다.
알아두어야 할 사항
전통적인 부호 있는 32비트 정수는 에포크 이후 최대 2,147,483,647초까지만 셀 수 있으며, 이 값은 2038년 1월 19일 03:14:07 UTC에 도달합니다 — 이른바 "2038년 문제"입니다. 여전히 타임스탬프를 32비트로 저장하는 시스템은 이 순간에 음수로 넘어가며, 그 성격은 Y2K 버그와 비슷합니다. 현대의 64비트 시스템은 같은 값을 훨씬 더 큰 정수에 저장하여 약 2,920억 년 동안 유효하므로, 오늘날의 데이터베이스, 운영체제, 프로그래밍 언어는 이 문제의 영향을 받지 않습니다. 음수 타임스탬프도 유효합니다 — 단지 1970년 1월 1일 이전의 날짜를 거꾸로 세어 나타낼 뿐입니다. 알아두면 좋은 한 가지 더: UTC는 지구의 자전과 맞추기 위해 이따금 윤초(leap second)를 삽입하지만, 유닉스 타임스탬프 표준은 윤초를 완전히 무시하고 모든 하루를 정확히 86,400초로 취급합니다 — 이는 타임스탬프 연산을 단순하게 유지해 주지만, 그 대가로 천문학적으로 완전히 정확하지는 않습니다.
유닉스 타임스탬프는 일상적인 개발 작업 곳곳에서 등장합니다: JSON 웹 토큰은 만료 시각을 exp 클레임으로 에포크 초 단위로 인코딩하고, HTTP 캐시 헤더와 쿠키도 흔히 같은 방식으로 만료 시각을 설정하며, 스케줄링 시스템은 현재 에포크 값을 목표 값과 비교해 언제 실행할지 결정합니다. 이 형식이 단순한 정수이기 때문에 날짜 연산도 아주 간단합니다: 타임스탬프에 86,400을 더하면 그것이 몇 월이든 윤년이든 상관없이 UTC 기준으로 정확히 하루 뒤를 의미합니다 — 달력 날짜로 하는 연산은 이보다 훨씬 더 오류가 나기 쉽습니다. 거의 모든 프로그래밍 언어가 "지금"을 타임스탬프로 읽어오는 간단한 함수를 제공하는 이유도 여기에 있습니다 — PHP의 time(), JavaScript의 Date.now(), Python의 time.time() — 그리고 두 타임스탬프를 단순한 숫자로 비교하는 것만으로도 세계 어디에서 일어난 일이든 어느 사건이 먼저 발생했는지 알 수 있는 이유이기도 합니다.
자주 묻는 질문
제 타임스탬프가 왜 3시간 차이가 납니까?
타임스탬프는 정의상 UTC입니다. 시차는 표시할 때만 나타납니다. 여기 표시된 UTC 행을 API와 비교해 보십시오 — 값이 일치한다면 데이터는 정확하며 현지 표시 방식만 다른 것입니다.
초입니까, 밀리초입니까 — 제 시스템은 어떤 것을 사용합니까?
자릿수를 세어보십시오: 10자리면 초(2286년까지 유효), 13자리면 밀리초입니다. 유닉스 도구와 PHP의 time()은 초를 사용하고, JavaScript의 Date.now()와 Java는 밀리초를 사용합니다.
"2038년 문제"의 한계 시점에서는 정확히 무슨 일이 일어납니까?
타임스탬프를 부호 있는 32비트 정수로 저장하는 시스템은 최대 2,147,483,647까지만 셀 수 있으며, 이 값은 2038년 1월 19일 03:14:07 UTC에 도달합니다. 1초 뒤 이 값은 오버플로우되어 큰 음수로 넘어가며, 소프트웨어는 이를 대개 1901년의 날짜로 잘못 해석합니다. 64비트 시스템은 동일한 정수를 훨씬 더 넓은 여유 범위로 저장하므로 이 문제의 영향을 받지 않습니다.
타임스탬프는 왜 윤초를 무시합니까?
유닉스 타임스탬프 표준은 모든 하루를 정확히 86,400초로 정의하여, 초와 달력 날짜 사이를 단순한 연산으로 변환할 수 있도록 합니다. 실제 UTC는 지구의 약간 불규칙한 자전에 맞추기 위해 이따금 윤초를 삽입하지만, 이 추가된 1초는 타임스탬프에 반영되지 않고 매끄럽게 넘어갑니다 — 이는 타임스탬프 연산을 예측 가능하게 유지해 주지만, 그 대가로 아주 미세한 천문학적 오차가 남습니다.
유닉스 타임스탬프는 음수가 될 수 있습니까?
예. 음수 값은 에포크로부터 초를 거꾸로 세어 나타낼 뿐이며, 예를 들어 -86400은 1969년 12월 31일 00:00:00 UTC를 나타냅니다. 모든 시스템이 음수 타임스탬프를 허용하는 것은 아니지만, 이 형식 자체는 별도의 예외 처리 없이 1970년 이전의 모든 날짜를 지원합니다.
비슷한 도구
문제 신고하기
유닉스 타임스탬프 변환기
댓글
아직 댓글이 없습니다 — 첫 댓글을 남겨보세요!