모든 아티클

유닉스 시간: 컴퓨터가 1970년부터 시간을 세는 이유

유닉스 시간(Unix timestamp)은 1970년 1월 1일 00:00:00 UTC부터 경과한 초의 수입니다. 이 날짜를 "유닉스 기원"이라고 부르며, 거의 모든 현대 운영체제, 데이터베이스, 프로그래밍 언어가 이 지점을 기준으로 시간을 셉니다.

왜 하필 1970년인가

이 날짜는 특별한 사건 때문에 선택된 것이 아니라 순전히 실용적인 이유 때문입니다. 1970년대 초 벨 연구소의 유닉스 개발자들은 당시 진행 중이던 연도를 편리하고 딱 떨어지는 시작점으로 그냥 채택했습니다. 이 날짜 뒤에 더 깊은 의미는 없습니다.

왜 게임 서버 로그에서 이 형식이 표준인가

한국의 온라인 게임 서버는 초당 수많은 이벤트(전투, 아이템 획득, 매치메이킹)를 기록하는데, 이런 로그를 유닉스 타임스탬프로 남기면 여러 리전 서버 간의 이벤트 순서를 시간대 변환 없이 단순한 숫자 비교만으로 정렬하고 분석할 수 있습니다.

2038년 문제

많은 오래된 시스템은 유닉스 시간을 부호 있는 32비트 정수로 저장하는데, 이는 2038년 1월 19일까지의 값만 표현할 수 있습니다. 이 날짜 이후에는 이런 숫자가 오버플로됩니다 — 이는 단순히 이론적인 문제가 아니라, 수십 년째 펌웨어 업데이트 없이 가동되는 산업용 임베디드 장비에서는 실제로 마주칠 수 있는 위험입니다.

왜 필요한가

  • 로그나 API 응답의 타임스탬프를 이해하기 쉬운 날짜와 시간으로 변환하기.
  • 달력을 수동으로 계산하지 않고 두 시점 사이의 차이를 계산하기.
  • 타임스탬프로 작업할 때 시간대 관련 문제 진단하기.

Unix 시간과 윤초

Unix 시간은 하루가 항상 정확히 86400초라고 간주하며, 지구 자전 속도 저하를 보정하기 위해 UTC에 가끔 추가되는 윤초(leap seconds)를 무시합니다. 즉 Unix 시간은 윤초가 추가되는 순간에는 UTC를 기술적으로 정확히 반영하지 못합니다 — 대부분의 시스템은 카운터에 불연속이 생기지 않도록 초를 "늘리거나(smear)" 반복하는 방식으로 처리합니다.

도구 사용해보기