이것은 문서의 이전 버전입니다!
유닉스 계열, 또는 POSIX를 준수하는 운영체제에서 사용하는 시각 표기. 일반적으로 유닉스 시간이라고 하는 것은 C에서 time_t
의 값으로, 표준 C에서는 이 값의 의미를 전혀 정의하지 않지만1) POSIX에서는 이 값을 명확히 정의하고 있다. 정확한 정의는:
이다. 이 정의가 UTC와 일대일 대응이 되지 않고 근사하도록 정의된 이유는 유닉스 시간을 윤초를 무시하고 UTC 표현으로부터 간단한 계산만으로 구할 수 있도록 되어 있기 때문이다. 그러하니 당연히 윤초가 추가될 때는 윤초 직전의 초와 윤초의 유닉스 시간 값이 겹치고, 윤초가 빠질 때는 빠진 윤초에 해당하는 유닉스 시간 값을 건너 뛰게 된다. 윤초를 건너 뛰는 것 뿐만이 아니라 현재 기원(1970년)은 UTC가 현재의 형태로 정착된 때(1972년)보다 이전이라 1972년 이전에 해당하는 유닉스 시간은 잘 정의되어 있지 않다고 할 수 있다.
이런 저런 문제에도 불구하고 유닉스 시간은 유닉스 계열 운영체제 뿐만 아니라 많은 프로그래밍 언어와 파일 포맷, 프로토콜 등에서 사용하고 있다. 이 중 32비트로 유닉스 시간을 표현하는 시스템에서는 "2038년 문제"라 불리는 Y2K 뺨치는 문제가 생길 예정이다. (time_t
가 부호없는정수이면 좀 더 시간을 벌 수 있겠지만, 호환성 등의 문제로 보통 부호 있는 정수를 쓰기 때문에 시간을 벌기는 어렵다.)