유닉스 타임스탬프 변환기는 1234567890 같은 숫자로 된 유닉스 타임스탬프를 사람이 읽을 수 있는 날짜·시간으로 바꾸거나, 반대로 특정 날짜를 타임스탬프 숫자로 변환해 주는 개발자용 도구입니다. 로그 분석, API 연동, 데이터베이스 쿼리, 디버깅처럼 시간을 다루는 거의 모든 개발 작업에서 필요합니다.
유닉스 타임스탬프는 1970년 1월 1일 00:00:00 UTC(협정 세계시)를 기준점(에폭)으로 삼아, 그 순간부터 지금까지 흐른 시간을 초 단위 정수 하나로 나타낸 값입니다. 사람이 쓰는 '2026년 7월 21일 오후 3시'는 나라·표준시·표기 방식에 따라 제각각이지만, 타임스탬프는 전 세계 어디서나 동일한 하나의 숫자이기 때문에 시스템 간에 시각을 주고받기에 이상적입니다.
이 도구는 현재 시각을 초·밀리초로 실시간 표시하고, 초 단위 타임스탬프를 입력하면 현지 시각과 UTC를 함께 보여 주며, 날짜를 고르면 초·밀리초 타임스탬프를 동시에 계산합니다. 아래에서는 유닉스 타임스탬프의 개념, 초와 밀리초의 차이, UTC와 타임존, 그리고 2038년 문제까지 개발자가 자주 마주치는 함정을 정리했습니다.
사용 방법
- 상단의 '현재 유닉스 시각'에서 지금 이 순간의 타임스탬프를 초·밀리초 단위로 확인합니다. 값은 매초 자동으로 갱신됩니다.
- 타임스탬프를 날짜로 바꾸려면 '타임스탬프 → 날짜' 칸에 초 단위 정수를 입력합니다. 입력 즉시 브라우저 현지 시각과 UTC 기준 시각이 함께 표시됩니다.
- 날짜를 타임스탬프로 바꾸려면 '날짜 → 타임스탬프' 칸에서 원하는 날짜와 시각을 선택합니다. 선택한 시각에 해당하는 초·밀리초 값이 바로 계산됩니다.
- 다른 시스템의 값이 자릿수가 13자리라면 밀리초 단위이므로, 이 도구의 초 입력 칸에 넣기 전에 1000으로 나눠 초 단위로 맞춘 뒤 사용하세요.
유닉스 타임스탬프란 무엇인가
유닉스 타임스탬프(유닉스 시간, POSIX 시간, 에폭 시간이라고도 부릅니다)는 1970년 1월 1일 00:00:00 UTC를 0으로 두고, 그 뒤로 경과한 초를 센 값입니다. 이 기준 시각을 '유닉스 에폭(Unix epoch)'이라고 합니다. 유닉스 운영체제가 시간을 이렇게 세기 시작한 데서 유래했으며, 오늘날 대부분의 프로그래밍 언어·데이터베이스·API가 이 방식을 표준으로 씁니다.
숫자 하나로 시각을 표현하기 때문에 시간대·언어·날짜 표기 형식에 영향을 받지 않고, 두 시각의 차이를 뺄셈만으로 구할 수 있어 계산이 간단합니다. 참고로 표준 유닉스 시간은 윤초(leap second)를 세지 않아, 하루를 항상 정확히 86,400초로 취급합니다.
| 타임스탬프(초) | UTC 기준 시각 | 의미 |
|---|---|---|
| 0 | 1970-01-01 00:00:00 | 유닉스 에폭(기준점) |
| 1000000000 | 2001-09-09 01:46:40 | 10억 초 돌파 |
| 1234567890 | 2009-02-13 23:31:30 | 자릿수가 순차적이라 유명 |
| 1700000000 | 2023-11-14 22:13:20 | 17억 초 돌파 |
| 2147483647 | 2038-01-19 03:14:07 | 32비트 부호 정수의 한계 |
초 vs 밀리초 — 자릿수로 구분하기
가장 흔한 실수가 초와 밀리초를 혼동하는 것입니다. 전통적인 유닉스 타임스탬프는 초 단위지만, 자바스크립트의 Date.now()나 자바의 System.currentTimeMillis() 등은 밀리초(1/1000초) 단위 값을 돌려줍니다. 같은 시각이라도 밀리초 값은 초 값보다 자릿수가 3자리 더 많습니다.
값이 어느 단위인지 헷갈릴 때는 자릿수를 세어 보면 됩니다. 현재 시점(2020~2030년대)에서 초 단위는 10자리, 밀리초 단위는 13자리입니다. 밀리초를 초로 잘못 넣으면 서기 약 5만 년, 초를 밀리초로 잘못 넣으면 1970년 직후로 나오므로, 결과 날짜가 터무니없으면 단위를 의심하세요.
| 단위 | 자릿수 | 예시 값 | 대표 환경 |
|---|---|---|---|
| 초(seconds) | 10자리 | 1721545200 | Unix time(), PHP, Python, DB |
| 밀리초(ms) | 13자리 | 1721545200000 | JavaScript, Java |
| 마이크로초(µs) | 16자리 | 1721545200000000 | 일부 로그·시계열 DB |
초 ↔ 밀리초 변환
밀리초를 초로 바꾸려면 1000으로 나누고(정수부만 사용), 초를 밀리초로 바꾸려면 1000을 곱합니다. 이 도구의 '타임스탬프 → 날짜' 입력 칸은 초 단위를 받으므로, 13자리 밀리초 값을 가지고 있다면 뒤 세 자리를 떼거나 1000으로 나눈 뒤 입력하세요.
UTC와 타임존
유닉스 타임스탬프 자체에는 시간대 정보가 들어 있지 않습니다. 타임스탬프는 언제나 UTC(협정 세계시) 기준의 절대적인 한 순간을 가리키며, 이를 사람이 보는 지역 시각으로 바꿀 때 비로소 타임존이 적용됩니다. 예를 들어 같은 타임스탬프라도 한국(UTC+9)에서는 오후 3시, 영국(UTC+0)에서는 오전 6시로 표시됩니다.
이 도구는 타임스탬프를 날짜로 변환할 때 사용자의 브라우저에 설정된 현지 시각과 UTC 기준 시각을 함께 보여 줍니다. 한국 표준시(KST)는 UTC보다 9시간 빠르며 서머타임(일광절약시간)을 쓰지 않으므로, 연중 항상 UTC+9로 고정됩니다.
저장은 UTC, 표시는 현지 시각
서버·데이터베이스에는 타임스탬프(또는 UTC 시각)를 그대로 저장하고, 사용자에게 보여 줄 때만 각자의 타임존으로 변환하는 것이 정석입니다. 지역 시각을 그대로 저장하면 서머타임 전환이나 서버 이전 시 시각이 어긋나기 쉽습니다.
2038년 문제 (Y2K38)
많은 오래된 시스템은 타임스탬프를 32비트 부호 있는 정수(signed 32-bit int)로 저장합니다. 이 자료형이 표현할 수 있는 최댓값은 2,147,483,647초인데, 이 값은 2038년 1월 19일 03:14:07 UTC에 도달합니다. 그 다음 순간 값이 넘쳐(오버플로) 음수로 뒤집히면서 1901년 12월로 잘못 계산되는 문제가 바로 '2038년 문제(Year 2038 problem, Y2K38)'입니다.
해결책은 타임스탬프를 64비트 정수로 저장하는 것입니다. 64비트로 확장하면 약 2,920억 년까지 표현할 수 있어 사실상 걱정이 없어집니다. 현대의 64비트 운영체제·언어·데이터베이스는 대부분 이미 64비트 시간을 쓰지만, 오래된 임베디드 기기나 레거시 시스템에는 여전히 잠재적 위험이 남아 있습니다.
1970년 이전 시각은 음수
유닉스 타임스탬프는 음수도 가질 수 있습니다. 에폭(1970-01-01) 이전 시각은 −1, −2 … 처럼 음수 초로 표현됩니다. 다만 언어나 라이브러리에 따라 음수 타임스탬프를 지원하지 않거나 다르게 처리할 수 있으니 주의해야 합니다.
자주 묻는 질문
- 유닉스 타임스탬프의 기준점은 정확히 언제인가요?
- 1970년 1월 1일 00:00:00 UTC(협정 세계시)입니다. 이 순간을 '유닉스 에폭'이라 하며 타임스탬프 값 0에 해당합니다. 그 이후 흐른 초를 세어 현재 시각을 나타냅니다.
- 내 타임스탬프가 초인지 밀리초인지 어떻게 구별하나요?
- 자릿수로 판단합니다. 2020~2030년대 기준으로 초 단위는 10자리, 밀리초 단위는 13자리입니다. 변환 결과가 서기 5만 년처럼 말이 안 되게 나오면 밀리초를 초로 착각한 경우이니, 1000으로 나눠 다시 넣어 보세요.
- 자바스크립트에서 유닉스 타임스탬프를 어떻게 구하나요?
- Date.now()는 밀리초 단위 값을 돌려줍니다. 초 단위가 필요하면 Math.floor(Date.now() / 1000)으로 1000을 나눠 정수부만 취하면 됩니다. 반대로 초 단위 값을 Date로 만들 때는 new Date(초 * 1000)처럼 1000을 곱해야 합니다.
- 타임스탬프에는 시간대(타임존) 정보가 들어 있나요?
- 없습니다. 타임스탬프는 항상 UTC 기준의 절대적인 한 순간이며, 시간대는 이를 사람이 읽을 시각으로 표시할 때 비로소 적용됩니다. 그래서 같은 타임스탬프도 한국에서는 오후 3시, 영국에서는 오전 6시로 보입니다.
- 2038년 문제가 뭔가요? 지금도 문제가 되나요?
- 타임스탬프를 32비트 부호 정수로 저장하는 시스템은 2038년 1월 19일 03:14:07 UTC를 넘기면 값이 넘쳐 시각이 1901년으로 뒤집힙니다. 64비트 정수를 쓰면 해결되며, 요즘 64비트 시스템은 대부분 안전합니다. 다만 오래된 임베디드·레거시 장비에는 위험이 남아 있습니다.
- 유닉스 시간은 윤초를 반영하나요?
- 표준 유닉스 시간은 윤초를 세지 않고 하루를 항상 86,400초로 취급합니다. 그래서 실제 천문 시각과 미세한 차이가 있지만, 대부분의 애플리케이션에서는 이 근사가 충분히 정확합니다.