유닉스 타임스탬프 변환기란?
유닉스 타임스탬프(에포크 시간이라고도 합니다)는 1970년 1월 1일 00:00:00 UTC를 기준으로 흐른 총 초(second) 수를 의미하며, 윤초는 계산에 포함하지 않습니다. 이 도구는 이 하나의 정수 값을 사람이 읽을 수 있는 UTC 달력 날짜와 시간으로 변환하고, 해당 날짜의 요일까지 함께 알려줍니다.
사용 방법
초 단위 유닉스 타임스탬프(예: 1700000000)를 붙여넣거나 입력한 뒤 변환을 실행하세요. 변환기는 UTC 기준의 연·월·일·시·분·초와 함께 요일, 그리고 에포크 이후 경과한 일수까지 보여줍니다.
계산 공식 풀이
먼저 초 값을 둘로 나눕니다. 일수 = \(\left\lfloor \frac{\text{ts}}{86400} \right\rfloor\)이고, 나머지가 하루 중 시각이 됩니다.
$$\begin{gathered} \text{Days} = \left\lfloor \frac{\text{Timestamp}}{86400} \right\rfloor, \qquad s = \text{Timestamp} \bmod 86400 \\[1.5em] \text{where}\quad \left\{ \begin{aligned} \text{Hour} &= \left\lfloor \frac{s}{3600} \right\rfloor \\ \text{Minute} &= \left\lfloor \frac{s \bmod 3600}{60} \right\rfloor \\ \text{Second} &= s \bmod 60 \\ (\text{Y},\text{M},\text{D}) &= \text{civil}(\text{Days}) \end{aligned} \right. \end{gathered}$$그다음 이 일수를 달력 날짜로 변환하는데, 이때 잘 알려진 하워드 힌넌트(Howard Hinnant)의 정수 기반 "days_from_civil" 역알고리즘을 사용합니다. 이 알고리즘은 한 해의 시작을 3월로 옮겨 윤일이 연말에 오도록 함으로써 예외 처리를 피할 수 있게 해 줍니다. 요일은 \((\text{Days} + 4) \bmod 7\)로 구하는데, 1970년 1월 1일이 목요일이었기 때문입니다.
계산 예시
\(\text{ts} = 1{,}700{,}000{,}000\)인 경우: 일수 = 19675, 나머지 = 72800초 = 22:13:20입니다.
$$\text{Days} = \left\lfloor \frac{1{,}700{,}000{,}000}{86400} \right\rfloor = 19675, \qquad s = 1{,}700{,}000{,}000 \bmod 86400 = 72800 = 22{:}13{:}20$$달력 변환 알고리즘은 19675일째를 2023-11-14로 변환합니다. 따라서 최종 결과는 2023-11-14 22:13:20 UTC가 됩니다.
자주 묻는 질문
시간대(타임존)가 반영되나요? 아니요. 결과는 항상 UTC 기준입니다. 한국 시간(KST)으로 보려면 UTC에 9시간을 더하세요. 그 외 지역은 해당 지역의 UTC 오프셋을 더하면 됩니다.
밀리초는 어떻게 하나요? 초 단위만 입력하세요. 밀리초 타임스탬프를 가지고 있다면 먼저 1000으로 나눈 뒤 입력하면 됩니다.
왜 윤초는 처리하지 않나요? 유닉스 시간 자체가 정의상 윤초를 무시하므로, 이 변환기도 동일하게 윤초를 반영하지 않습니다.