[unix] 1970 년 1 월 1 일은 왜“에포크 시간”입니까?

1970 년 1 월 1 일 00:00:00

시대 시간을 고려 ?



답변

유닉스의 초기 버전은 1/60 초 간격으로 시스템 시간을 측정했습니다. 이는 부호없는 32 비트 정수가 829 일 미만의 시간 범위 만 나타낼 수 있음을 의미했습니다. 이러한 이유로, 최근에 숫자 0( epoch )로 표시되는 시간 을 설정해야했습니다. 1970 년대 초반이었던이 시대는 1971-1-1로 설정되었습니다.

나중에 시스템 시간이 1 초마다 증가하도록 변경되어 32 비트 부호없는 정수로 표현 될 수있는 시간 범위가 약 136 년으로 늘어났습니다. 더 이상 카운터에서 1 초마다 짜내는 것이 그다지 중요하지 않았기 때문에, 에포크는 가장 가까운 10 년으로 반올림되어 1970-1-1이되었습니다. 이것이 1971-1-1보다 조금 더 깔끔하다고 간주되어야합니다.

에포크 (epoch)로 1970-1-1을 사용 하는 32 비트 부호있는 정수는 최대 2038-1-19의 날짜를 나타낼 수 있으며 ,이 날짜는 1901-12-13으로 줄 바꿈됩니다.


답변

역사 .

초기 Unix 시간 버전은 초기 Unix 시스템의 하드웨어에서 시스템 클럭의 속도 인 60Hz의 속도로 32 비트 정수로 증가했습니다. 결과적으로 일부 소프트웨어 인터페이스에 60Hz 값이 계속 나타납니다. 신기원은 현재 가치와 달랐다. 1971 년 11 월 3 일자 제 1 판 유닉스 프로그래머 매뉴얼은 유닉스 시간을 “1971 년 1 월 1 일 00:00:00 이후의 시간으로, 1/6 초 단위로 측정 한 것”으로 정의합니다.


답변

http://en.wikipedia.org/wiki/Unix_time#History 는 유닉스 시대의 기원과 선택한 시대에 대해 설명합니다. 유닉스 시간과 에포크 날짜의 정의는 현재 상태를 안정화하기 전에 몇 가지 변화를 거쳤습니다.

그러나 왜 정확히 1/1/1970이 결국에 선택되었는지는 말하지 않습니다.

Wikipedia 페이지에서 주목할만한 발췌 :

1971 년 11 월 3 일자 제 1 판 유닉스 프로그래머 매뉴얼은 유닉스 시간을 ” 1971 년 1 월 1 일 00:00:00 이후의 시간으로 , 60 분의 1 초로 측정 한 것”으로 정의합니다.

범위가 제한되어 있기 때문에 속도가 1Hz로 변경되고 에포크가 현재 값으로 설정되기 전에 에포크가 두 번 이상 재정의 되었습니다.

본 정의의 복잡성을 포함하여 몇 가지 이후의 문제점들은 유닉스 시간이 처음부터 완전히 정의되지 않고 사용에 의해 점진적으로 정의 되었기 때문에 발생한다.


답변

에포크 참조 날짜

시대 참조 날짜는 우리가 시간을 계산있는 타임 라인에 포인트입니다. 그 시점 이전의 순간은 음수로 계산되고 그 이후의 순간은 양수로 계산됩니다.

사용중인 많은 시대

1970 년 1 월 1 일 00:00:00이 에포크 시간으로 간주되는 이유는 무엇입니까?

아니, 시대, 시대. 사용 중인 많은 시대가 있습니다 .

이 시대의 선택은 임의적 입니다.

주요 컴퓨터 시스템과 라이브러리는 적어도 수십 가지 다양한 시대를 사용 합니다. 가장 인기있는 시대 중 하나는 일반적으로 언급 한 1970 UTC 순간을 사용하여 Unix Time 으로 알려져 있습니다.

유닉스 타임의 1970 년대는 인기가 많았지 만 가장 일반적 이지 않을 수 있습니다 . 또한 가장 일반적인 실행은 수많은 Microsoft Excel 및 Lotus 1-2-3 스프레드 시트의 경우 1900 년 1 월 0 일이거나, 수많은 앱에서 전 세계 10 억 대 이상의 iOS / macOS 컴퓨터에서 Apple의 Cocoa 프레임 워크에서 사용 된 2001 년 1 월 1 일입니다. 아니면 GPS 장치가 1980 년 1 월 6 일 사용 했습니까?

많은 세분성

다른 시스템은 계산 시간에 다른 세분성을 사용합니다.

이른바“유닉스 타임”조차도 일부 시스템은 단위로 계산하고 일부는 밀리 초 단위로 계산 합니다. Postgres와 같은 많은 데이터베이스는 마이크로 초를 사용 합니다. Java 8 이상의 최신 java.time 프레임 워크 와 같은 일부 는 nanoseconds를 사용 합니다 . 일부는 여전히 다른 세분성을 사용합니다.

ISO 8601

에포크 참조 사용과 세분성에 많은 차이가 있기 때문에 일반적으로 에포크 카운트로서 모멘트를 전달하는 것을 피하는 것이 가장 좋습니다. 에포크 (epoch) 및 세분성 (granularity)의 애매함과 인간이 의미있는 값을 인식하지 못하여 버그가있는 값을 놓칠 수없는 경우 숫자 대신 일반 텍스트를 사용하십시오.

ISO 8601 표준 텍스트로 날짜 – 시간 값을 표현하기위한 실제적인 잘 설계된 형식의 광범위한 세트를 제공합니다. 이러한 형식은 여러 문화권에서 사람이 쉽게 읽을 수있을뿐만 아니라 기계별로 구문 분석하기 쉽습니다.

여기에는 다음이 포함됩니다.


답변

짧은 대답 : 왜 그렇지 않습니까?

더 긴 대답 : 시간을 사용하는 모든 사람이 그 가치에 동의하는 한 시간 자체는 중요하지 않습니다. 1/1/70은 오랫동안 사용되어 왔으므로이를 사용하면 가능한 많은 사람들이 가능한 한 코드를 이해할 수 있습니다.

임의의 시대를 선택하는 데 큰 장점은 없습니다.


답변