유닉스 시간이란?
유닉스 시간(UNIX 타임스탬프 또는 POSIX 시간이라고도 합니다)은 유닉스 에포크인 1970-01-01 00:00:00 UTC를 기준으로 흘러간 초의 누적값입니다. 특정 순간을 하나의 정수로 표현하는 보편적이고 언어 중립적인 방식으로, 로그·데이터베이스·API·프로그래밍 등 컴퓨팅 전반에서 널리 쓰입니다. 윤초는 반영하지 않으며, 하루는 언제나 정확히 86,400초로 계산합니다.
계산기 사용법
벽시계에 표시되는 그대로의 날짜(연·월·일)와 시각(시·분·초)을 입력하세요. 그런 다음 "UTC와의 시차"에 해당 지역 시간의 시간대 오프셋을 시간 단위로 설정합니다. 예를 들어 일본은 +9, 인도는 +5.5, 미국 태평양 표준시(PST)는 -8입니다. 참고로 한국 표준시(KST)도 +9입니다. 기본 오프셋은 +9(일본 시간)로 설정되어 있습니다. 시·분·초를 비워 두면 0으로 처리됩니다.
공식 설명
먼저 날짜를 days-from-civil 알고리즘(Howard Hinnant 고안)을 사용해 일수로 변환합니다. 이 알고리즘은 윤년과 1970년 이전 날짜를 포함한 모든 그레고리력 날짜에 대해 에포크 기준 일수를 정확히 계산합니다. 그 일수에 86,400을 곱하고 시·분·초를 더하면 현지 시각 기준으로 1970-01-01 00:00:00부터의 초가 됩니다. 마지막으로 UTC 오프셋(시간 × 3600)을 빼서 결과를 UTC 기준으로 보정합니다.
$$ \begin{gathered} t = 86400 \cdot D + 3600\,\text{Hour} + 60\,\text{Minute} + \text{Second} - 3600\,\text{UTC Offset} \\[1.5em] \text{where}\quad \left\{ \begin{aligned} D &= \text{days from } 1970\text{-}01\text{-}01 \text{ to the chosen date} \\ \text{date} &= \left(\text{Year},\ \text{Month},\ \text{Day}\right) \end{aligned} \right. \end{gathered} $$
계산 예시
오프셋 +9에서 2025-06-15 00:00:00을 변환하면: daysSinceEpoch = 20254이므로 \(\text{localSeconds} = 20254 \times 86400 = 1{,}749{,}945{,}600\)입니다. 여기서 \(9 \times 3600 = 32{,}400\)을 빼면 유닉스 시간 1,749,913,200이 되며, 이는 2025-06-14 15:00:00 UTC에 해당합니다.
자주 묻는 질문
양수 오프셋인데 왜 타임스탬프가 예상보다 작게 나오나요? UTC보다 앞선 현지 시각은 더 이른 UTC 순간에 대응하기 때문입니다. 따라서 같은 벽시계 값을 UTC로 그대로 읽었을 때보다 유닉스 값이 더 작아집니다.
1970년 이전 날짜도 처리할 수 있나요? 네, 결과가 단순히 음수로 나올 뿐입니다. 1969-12-31 23:59:59 UTC는 \(-1\)입니다.
윤초가 포함되나요? 아니요. 하루를 정확히 86,400초로 보는 표준 POSIX 정의를 따릅니다.