Unix 타임스탬프 FAQ

Unix 타임스탬프에 관한 가장 흔한 질문에 대한 빠른 답변 — 단위, 시간대 처리, 2038년 문제, 언어별 변환 등.

자주 묻는 질문

Unix 타임스탬프란?
Unix 타임스탬프는 Unix 에포크(1970년 1월 1일 00:00:00 UTC) 이후 경과한 초 수입니다. 언어 중립적이고 시간대에 독립적인 정수로, 시간상의 어떤 순간이든 고유하게 식별합니다.
Unix 에포크란?
Unix 에포크는 1970년 1월 1일 00:00:00 UTC입니다. 모든 Unix 타임스탬프는 이 고정 기준점에서 앞으로 — 음수 값의 경우 뒤로 — 측정됩니다. 1970년이 선택된 것은 실용적 이유였습니다: 벨 연구소에서 Unix를 설계하던 당시의 최근이고 깔끔한 연도였습니다.
10자리와 13자리 타임스탬프의 차이는?
10자리 타임스탬프(예: 1700000000)는 에포크 이후의 초를 나타냅니다. 13자리(예: 1700000000000)는 밀리초를 나타냅니다. JavaScript의 Date.now()는 밀리초를 반환하고, 대부분의 Unix 시스템 호출과 Python, Go, PHP 같은 언어는 기본적으로 초를 반환합니다.
왜 JavaScript는 초 대신 밀리초를 쓰나요?
JavaScript의 Date API는 1995년에 사용 가능했던 시스템 타이머의 해상도에 맞춰 설계되었습니다. 밀리초를 쓰면 1초 미만 지속 시간의 정밀도 손실을 피합니다. 서버가 생성한 초 단위 Unix 타임스탬프를 다룰 때는 new Date()에 넘기기 전에 1000을 곱하세요.
JavaScript에서 Unix 타임스탬프를 읽기 쉬운 날짜로 변환하려면?
초 타임스탬프: new Date(1700000000 * 1000).toISOString(). 밀리초 타임스탬프: new Date(1700000000000).toISOString(). 둘 다 '2023-11-15T06:13:20.000Z' 같은 ISO 8601 문자열을 만듭니다. 지역화된 표시에는 timeZone 옵션과 함께 toLocaleString()을 쓰세요.
Unix 타임스탬프는 시간대를 인식하나요?
아니요. Unix 타임스탬프는 항상 UTC의 단일 순간을 나타냅니다. 시간대 정보는 타임스탬프를 표시용으로 포맷할 때만 적용됩니다. 서로 다른 시간대의 두 기기는 같은 순간에 대해 같은 Unix 타임스탬프를 만듭니다.
2038년 문제란?
Unix 타임스탬프를 32비트 부호 있는 정수로 저장하는 시스템은 2,147,483,647까지의 값만 나타낼 수 있는데, 이는 2038년 1월 19일 03:14:07 UTC에 해당합니다. 그 순간 이후 정수는 큰 음수로 오버플로됩니다. 현대 64비트 시스템은 영향을 받지 않지만, 임베디드 시스템과 레거시 데이터베이스는 여전히 위험할 수 있습니다.
음수 Unix 타임스탬프란?
음수 Unix 타임스탬프는 Unix 에포크 이전의 순간을 나타냅니다. 예를 들어 -86400은 1969년 12월 31일 00:00:00 UTC입니다. 대부분의 현대 날짜 API는 음수 타임스탬프를 올바르게 처리하지만, 일부 오래된 시스템과 데이터베이스는 지원하지 않습니다.
Python에서 Unix 타임스탬프를 어떻게 얻나요?
초에는 import time; int(time.time())을 쓰세요. 명시적 UTC datetime에는: import datetime; int(datetime.datetime.now(datetime.timezone.utc).timestamp()). 밀리초에는: int(time.time() * 1000).
Unix 타임스탬프는 얼마나 정밀한가요?
표준 Unix 타임스탬프는 초 정밀도입니다. 1초 미만 정밀도에는 밀리초 타임스탬프(13자리)가 웹 API와 JavaScript에서 흔합니다. 일부 시스템은 마이크로초(16자리)나 나노초를 씁니다. 적절한 단위는 애플리케이션이 실제로 필요로 하는 정밀도에 따라 다릅니다.