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


455

왜

1970 년 1 월 1 일 00:00:00

시대 시간을 고려 ?


21
왜 이것이 주관적이라고 생각했는지 모르겠습니다. 'Epoch'시간은 표준 타임 스탬프 구성표입니다.
— ConcernedOfTunbridgeWells

5
오늘 380,000 시간 전
— mplungjan

21
이 날짜 이후로 시간을 계산해야하므로 이제 44 년이되었습니다.
— Leonardo Raele

3
오늘은 1499969999입니다! 그냥 약. 가는 8 시간!
— Dr Beco

1
@LeonardoRaele 그래! 예를 들어, 제 2 차 세계 대전은 31 년 BE에 시작되었습니다!
— Siavash Mortazavi

답변:


417

유닉스의 초기 버전은 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으로 줄 바꿈됩니다.


30
1/60은 미국 전력망의 주파수와 관련이 있습니까?
— xtofl

55
당시 사용 된 시스템 보드의 발진기 중 하나의 주파수입니다. 오실레이터가 DC에서 작동 한 이후 60Hz 일 필요는 없었지만 당시 가장 일반적인 것을 사용하는 것이 아마도 저렴했으며 당시 TV는 대량 생산되고있었습니다.
— Matt Howells

18
실제로 당시에는 컴퓨터 클럭과 RTC가 미국의 주 파형과 동기화되는 것이 매우 일반적 이었기 때문에 매우 신뢰할 수있었습니다. 프로세서 클럭을 얻기 위해 곱해졌고 RTC의 경우 몇 초가되었습니다.
— Alexios 2016 년

12
@mafioso : 맞아, 나는 2038 -... 1901-12-13에 대한 내 노트북에 알림을 설정합니다.

18
@JediKnight 이것은 개발자로서의 내 자신의 경험을 바탕으로 한 추측입니다. 표준을 변경하는 데 시간이 걸리며 변경 사항이 적용되지 않으면 경쟁 표준 을 따릅니다 . 신기원 문제에 대한 진정한 해결책은 신기원을 제 시간으로 이동시키지 않는 64 비트 정수입니다.
— Jake

51

역사 .

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


1
신기원 시간은하지 1월 1일 1971 1970년 1월 1
— 스티브 해리슨

10

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로 변경되고 에포크가 현재 값으로 설정되기 전에 에포크가 두 번 이상 재정의 되었습니다.

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


6

에포크 참조 날짜

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

사용중인 많은 시대

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

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


-10

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

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

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


37
Unix는 1969 년에 개발되어 1971 년에 처음 릴리스되었으므로 1970-01-01-00 : 00 : 00 이전의 시스템 시간을 나타내는 시스템이 없다고 가정하는 것이 합리적입니다.
— Jörg W Mittag

3
역사적 시뮬레이션 게임의 개발자로서, 일부 시간 객체의 디자이너는 모든 프로그램이 미래 또는 최근 과거의 날짜 만 나타내기를 원한다고 가정하는 경향이 있습니다. 물론, 우리는 우리 자신의 표현을 프로그래밍하거나 조정 요소로 작업 할 수 있지만 여전히 그렇습니다.
— Dronz

8
비즈니스 스프레드 시트, 과학 데이터 프리젠 테이션, 타임머신 UI 등과 같은 "실제적인"게임 이외의 용도에도 동일한 사전 발생 문제가 적용됩니다.
— Lenoxus

7
@Dronz 이것은 로직 게이트 용 트랜지스터와 다이오드를 CPU로 사용하는 9KB RAM을 갖춘 $ 72000 컴퓨터 용으로 설계되었습니다 (당시 칩 없음). 따라서 가장 기본적인 것을 만드는 것은 "실리 한"것이 아닙니다.
— Camilo Martin

2
메타 수준에서 OP는 정확합니다. 시간에 따라 작동하는 체계는 항상 임의적이었습니다. 1 년의 일수, 그 달의 일수, "0"년, 그리고 윤년의 규칙은 ... 미친 것입니다. 모든 시스템은 사용 가능한 기술로 할 수있는 최선이었으며 즉각적인 사용 사례에 충분히 적합했기 때문에 일련의 엉터리 타협입니다. 모든 엔지니어링 프로젝트에 해당됩니다.)
— Indolering
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.