본문으로 바로가기

유닉스 타임스탬프 변환기

유닉스 타임스탬프를 날짜로, 날짜를 타임스탬프로 바꿉니다. 초·밀리초·마이크로초·나노초를 자동 판별하고 시간대별 ISO 8601과 현재 유닉스 시간을 보여 줍니다.

현재 유닉스 시간

  • 초 (s)
  • 밀리초 (ms)

자동은 자릿수로 판단합니다 (10자리 초, 13자리 밀리초).

결과

타임스탬프를 입력하면 날짜와 시간으로 바꿉니다.

예: 1700000000 → 2023년 11월 14일 22:13:20 UTC

입력한 내용은 이 브라우저 안에서만 처리되며 서버로 전송되지 않습니다. 어떻게 동작하나요?

유닉스 초 단위 값 1704067200을 UTC 2024년 1월 1일 0시로 변환

사용 방법

맨 위에는 현재 유닉스 시간이 초와 밀리초로 1초마다 갱신되며, 옆의 복사 버튼으로 바로 복사할 수 있습니다.

타임스탬프 → 날짜 탭에서 숫자를 붙여넣으면 고른 시간대의 날짜·요일·시각과 지금으로부터 얼마나 전(후)인지가 나타납니다. 그 아래에 판별한 단위와 초·밀리초 값이 나오고, 이어서 ISO 8601(UTC와 고른 시간대), HTTP 날짜(RFC 9110) 형식이 복사 버튼과 함께 나옵니다. 고른 시간대가 이 기기의 시간대와 다르면 이 기기 시간도 함께 보여 주고, HTTP 날짜는 연도가 0 ~ 9999일 때만 나옵니다. 시간대 목록에는 브라우저가 아는 IANA 시간대(Asia/Seoul, Europe/Berlin 등)가 모두 있고, 처음에는 이 기기의 시간대가 선택됩니다. 현재 시간과 시간대는 이 기기의 시계와 브라우저 설정에서 읽습니다.

날짜 → 타임스탬프 탭에서는 날짜와 시간(초까지)을 넣고 그 시각이 어느 시간대 기준인지 고르면 초·밀리초 타임스탬프를 돌려줍니다.

유닉스 시간이란

유닉스 시간(에포크 시간, POSIX 시간)은 1970-01-01T00:00:00Z(UTC)부터 흐른 초의 수입니다. POSIX 표준은 이를 “Seconds Since the Epoch”로 정의하고, 하루를 언제나 86,400초로 셉니다. 그래서 윤초는 세지 않습니다 — 윤초가 들어간 날도 유닉스 시간으로는 86,400초이고, 그 결과 유닉스 시간은 날짜 계산이 단순한 대신 실제 경과 초와는 윤초만큼 다릅니다. 이 도구에서도 윤초 시각(23:59:60)은 나오지 않습니다. 타임스탬프를 날짜로 바꾸면 초는 언제나 0 ~ 59이고, 날짜 → 타임스탬프 탭에도 60초는 넣을 수 없습니다.

타임스탬프는 한 순간을 가리키는 수라서 시간대와 상관없이 같습니다. 서울에서든 뉴욕에서든 같은 순간의 타임스탬프는 같고, 벽시계 시각으로 바꿀 때만 시간대가 필요합니다. 타임스탬프 → 날짜 탭에서 시간대를 바꾸면 날짜·시각과 그 시간대의 ISO 8601 줄이 바뀌고, 초·밀리초 값과 ISO 8601 (UTC), HTTP 날짜는 그대로입니다. 반대로 날짜 → 타임스탬프 탭에서는 같은 날짜와 시간이라도 UTC와의 시차가 다른 시간대로 바꾸면 타임스탬프가 달라집니다.

초·밀리초·마이크로초·나노초 구분하기

같은 순간도 단위에 따라 자릿수가 다릅니다. 현재(2020년대) 시각 기준으로 보통 다음과 같습니다.

  • 초: 10자리 (1700000000) — 파이썬 int(time.time()), PostgreSQL·MySQL 함수
  • 밀리초: 13자리 (1700000000000) — 자바스크립트 Date.now()
  • 마이크로초: 16자리 — 일부 데이터베이스·로그
  • 나노초: 19자리 — 고정밀 시계를 쓰는 언어·로그

이 도구의 자동 판별은 앞자리 0을 뺀 정수 부분의 자릿수로 정합니다: 11자리 이하는 초, 12 ~ 14자리는 밀리초, 15 ~ 17자리는 마이크로초, 18자리 이상은 나노초입니다. 1973년 3월 이전 시각을 밀리초로 적은 값처럼 자릿수가 적은 경우에는 단위를 직접 고르세요. 밀리초보다 작은 자리(마이크로초·나노초 값, 소수로 적은 자리)는 날짜 표시에서 잘립니다.

자바스크립트 Date가 다룰 수 있는 범위는 1970년 기준 앞뒤로 8.64 × 10¹⁵밀리초(1억 일, 약 27만 년)입니다. 즉 -271821-04-20T00:00:00Z부터 +275760-09-13T00:00:00Z까지이며, 이 밖의 값은 범위 오류로 알려 줍니다.

언어별로 현재 타임스탬프 얻기

// 자바스크립트: 초 (Date.now()는 밀리초)
Math.floor(Date.now() / 1000)
# 파이썬: 초 (time.time()은 소수가 붙은 초)
import time; int(time.time())
-- PostgreSQL
SELECT EXTRACT(EPOCH FROM now());
-- MySQL
SELECT UNIX_TIMESTAMP();

시간대와 서머타임

날짜를 타임스탬프로 바꿀 때 서머타임이 있는 시간대에서는 두 가지 예외가 생깁니다. 서머타임이 시작되는 날에는 시계가 앞으로 넘어가 존재하지 않는 시각이 있고(예: 뉴욕 2026-03-08 02:30), 끝나는 날에는 같은 시각이 두 번 있습니다(예: 뉴욕 2026-11-01 01:30). 이 도구는 없는 시각은 바뀌기 전 시차로 계산해 뒤로 밀린 시각을, 두 번 있는 시각은 앞의 것을 고르고 결과 위에 안내합니다.

참고 자료

자주 묻는 질문

쉼표가 들어간 숫자나 1.7e9 같은 값을 붙여넣으면 왜 오류가 나나요?

타임스탬프 입력란은 숫자와 맨 앞의 부호(+ 또는 -), 소수점 하나만 읽기 때문입니다. 1,700,000,000처럼 쉼표나 공백으로 자리를 나눈 값, 1.7e9 같은 지수 표기, 0x로 시작하는 16진수, 1700000000s처럼 글자가 붙은 값, 소수점을 쉼표로 적은 1700000000,5는 모두 "숫자만 입력하세요" 오류가 납니다. 구분 기호와 글자를 지우고 1700000000처럼 숫자만 남기세요. 소수점 앞뒤에는 숫자가 있어야 하므로 .5는 0.5로 적습니다. 값 앞뒤의 공백은 무시하므로 지우지 않아도 되고, 0001700000000처럼 앞에 0이 붙은 값도 그대로 읽습니다.

날짜가 1970년이나 수만 년 뒤로 나오면 무엇을 확인하나요?

단위를 잘못 읽으면 날짜가 크게 어긋납니다. 단위를 밀리초 (ms)로 두고 1700000000을 넣으면 1970-01-20T16:13:20Z가 되고, 초 (s)로 두고 1700000000000을 넣으면 +055840-11-08T22:13:20Z가 됩니다. 결과가 1970년 1월이나 수만 년 뒤로 나오면 단위를 "자동"으로 되돌리거나 값에 맞는 단위를 고르세요. 1700000000.5처럼 소수가 붙은 값은 소수점 앞 자릿수만 세어 초로 판별하고, 밀리초 값은 1700000000500으로 나옵니다.

음수 타임스탬프도 되나요?

됩니다. 숫자 앞에 -를 붙여 넣으면 1970-01-01T00:00:00Z보다 앞선 시각으로 바꿉니다. -86400은 하루 전인 1969-12-31T00:00:00Z입니다. 자동 판별은 부호를 빼고 자릿수만 세므로 -1700000000000은 밀리초로 읽어 1916-02-18T01:46:40Z가 됩니다. 소수가 붙은 음수에서 초 값은 0 쪽이 아니라 더 이른 쪽으로 내립니다. -0.5를 넣으면 밀리초는 -500, 초는 -1로 나옵니다. 날짜 → 타임스탬프 탭에서도 1970년 이전 날짜를 넣으면 음수가 나옵니다. 시간대를 UTC로 두고 1969-12-31 00:00:00을 넣으면 -86400입니다.

날짜 아래에 나오는 "3년 전" 같은 표시가 실제 날짜 차이와 다른 것 같습니다. 어떻게 계산하나요?

이 표시는 달력으로 세지 않고, 지금과의 차이를 고정된 길이로 나눈 근삿값입니다. 차이가 1분 미만이면 초, 1시간 미만이면 분, 24시간 미만이면 시간, 30일 미만이면 일로 나타냅니다. 365일 미만은 30일을 한 달로, 그 이상은 365일을 한 해로 계산하고 나머지는 버립니다. 그래서 364일 전은 "12개월 전"으로, 4 × 365일에서 하루 모자란 1459일 전은 "3년 전"으로 나옵니다. 정확한 날짜는 그 위의 날짜·시각이나 ISO 8601 줄에서 확인하세요.

1900년 같은 옛날 날짜에서 시차가 +08:27:52처럼 초까지 나옵니다. 오류인가요?

오류가 아닙니다. 이 도구는 시차를 따로 정하지 않고, 브라우저의 시간대 데이터가 그 시각에 대해 알려 주는 값을 반올림 없이 그대로 씁니다. 그 데이터에는 옛 시기의 시차가 시간·분으로 딱 떨어지지 않는 시간대가 있습니다. 예를 들어 시간대를 Asia/Seoul로 두고 -2208988800(1900-01-01T00:00:00Z)을 넣으면 ISO 8601 (Asia/Seoul) 줄의 시차가 +08:27:52로 나옵니다. 날짜 → 타임스탬프 탭도 같은 시차로 계산하므로, Asia/Seoul의 1900-01-01 00:00:00은 -2209019272가 됩니다(UTC로 두면 -2208988800). 브라우저에 들어 있는 시간대 데이터에 따라 결과가 다를 수 있습니다.

2038년 이후 날짜를 변환해도 되나요?

유닉스 시간을 부호 있는 32비트 정수(time_t가 32비트인 시스템)에 담으면 최댓값은 2147483647입니다. 이 값은 2038-01-19T03:14:07Z이고, 1초 뒤에는 값이 넘쳐 -2147483648, 곧 1901-12-13T20:45:52Z로 돌아갑니다. 64비트 time_t를 쓰는 요즘 운영체제는 문제가 없지만, 타임스탬프를 32비트 정수 열·파일 필드에 저장하는 프로그램이나 오래된 임베디드 기기는 여전히 영향을 받습니다. 이 도구는 32비트 정수를 쓰지 않으므로 이 범위 밖의 값도 그대로 변환합니다. 타임스탬프 → 날짜 탭에서는 초로 환산한 값이 이 범위(-2147483648 ~ 2147483647)를 벗어나면 결과 아래에 알려 줍니다. 날짜 → 타임스탬프 탭에는 이 알림이 없으니 결과가 이 범위 안인지 직접 확인하세요.

최종 수정일: