Curious TechieDev Toolbox
전체 가이드/시간 & 에포크8 min read

유닉스 시간(Unix Time / Epoch)이란 무엇인가?

컴퓨터가 1970년 1월 1일부터 초를 세는 이유, 32비트와 64비트 타임스탬프, 2038년 문제 및 윤초 처리.

핵심 요약 (Key Takeaways)
  • 유닉스 시간은 1970년 1월 1일 00:00:00 UTC부터 경과한 총 초(second) 수를 의미합니다.
  • 시간대(타임존)에 구애받지 않는 단일 정수이므로 데이터베이스 인덱스 및 서버 간 동기화에 최적입니다.
  • 2038년 문제(Y2038)는 32비트 부호 있는 정수의 오버플로로 발생하며, 64비트 정수로 전환하여 해결합니다.
  • 유닉스 시간은 윤초(Leap Second)를 별도의 초 단위로 누적하지 않고 재조정합니다.

컴퓨터 환경에서는 전 세계에 분산된 서버 간에 시계열 이벤트를 오류 없이 정렬하기 위해 단조 증가하는 단일 수치 체계가 필수적입니다. 그 기준이 바로 유닉스 에포크 시간(Unix Time)입니다.

1. 유닉스 에포크(Epoch)란 무엇인가?

유닉스 에포크는 1970년 1월 1일 목요일 00:00:00 협정 세계시(UTC)를 기점으로 정의됩니다. 이 순간부터 1초가 경과할 때마다 정수 카운터가 1씩 증가합니다.

2. 초(10자리) vs 밀리초(13자리) 단위 비교

리눅스/POSIX OS 커널은 10자리 "초"(예: 1787610000)로 시간을 관리하고, 자바스크립트 등 고수준 런타임은 13자리 "밀리초"(예: 1787610000000)를 다룹니다. 상호 변환 시 1,000을 곱하거나 나눕니다.

3. 시간대(Timezone)와 ISO 8601 표준

유닉스 타임스탬프는 특정 시간대에 구애받지 않는 절대적인 시간의 지점입니다. 한국 표준시(KST) 등의 지역 시차는 ISO 8601 표기(YYYY-MM-DDTHH:mm:ssZ)로 사용자에게 보여줄 때만 변환됩니다.

4. 2038년 문제 (Y2038 버그) 해설

32비트 부호 있는 정수로 시간을 저장하는 레거시 시스템은 2038년 1월 19일 03:14:07 UTC에 오버플로우가 발생하여 음수(1901년)로 잘못 계산됩니다. 최신 64비트 시스템은 이를 완전히 해결했습니다.