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.