날짜가 1970 년 1 월 1 일부터 계산되는 이유는 무엇입니까?


98

날짜 (1970 년 1 월 1 일)를 시간 조작의 기본 표준으로 사용하는 이유가 있습니까? 저는이 표준을 파이썬뿐만 아니라 자바에서도 보았습니다. 내가 알고있는이 두 언어. 동일한 표준을 따르는 다른 인기있는 언어가 있습니까?

설명해주세요.


1
동일한 표준을 따르는 또 다른 인기있는 언어는 PHP로, 상당히 일반적인 시간 시작 지점입니다.
Greg K

답변:


67

유닉스 시간 의 표준입니다 .

Unix 시간 또는 POSIX 시간은 윤초를 계산하지 않고 1970 년 1 월 1 일 자정의 UTC (proleptic Coordinated Universal Time) 이후 경과 한 시간 (초)으로 정의되는 시점을 설명하는 시스템입니다.


5
Kernighan과 Thompson이 "우리가 제품을 만들기 시작하기 약간 전의 숫자"를 넘어서 그 순간을 선택한 이유를 모두 표현했는지 알고 있습니까?
dmckee --- ex-moderator kitten

1 년의 시작이고 제로 타임 존 (Zulu)입니다. 둘 다 날짜 형식화 코드를 더 간단하게 만듭니다.
Donal Fellows

28
윤초를 계산하지 않습니까? 나는 그 세부 사항을 몰랐다. 잠시 생각해 보면 왜 그런 식으로했는지 알 수 있습니다. 내 세상은 산산조각이났습니다. 24 초.
keturn

70

날짜 (1970 년 1 월 1 일)를 기본 표준으로 사용

질문은 두 가지 잘못된 가정을합니다.

  • 컴퓨팅의 모든 시간 추적은 1970 년 이후로 수행됩니다.
  • 이러한 추적은 표준입니다.

이십 에포크

계산 시간 이 1970 UTC 초부터 항상 추적되는 것은 아닙니다 . 이 epoch 참조 가 인기가 있지만 수십 년 동안 다양한 컴퓨팅 환경에서 거의 24 epoch를 사용했습니다 . 일부는 다른 세기에서 왔습니다. 0 년부터 2001 년까지의 범위입니다.

다음은 몇 가지입니다.

기원전 1 년 1 월 0 일

AD 1 년 1 월 1 일

1582 년 10 월 15 일

1601 년 1 월 1 일

1840 년 12 월 31 일

1858 년 11 월 17 일

1899 년 12 월 30 일

1899 년 12 월 31 일

1900 년 1 월 1 일

1904 년 1 월 1 일

1967 년 12 월 31 일

1980 년 1 월 1 일

1980 년 1 월 6 일

2000 년 1 월 1 일

2001 년 1 월 1 일

Unix Epoch 공통이지만 지배적이지는 않음

1970 년 초는 유닉스에서 사용 되었기 때문에 인기가 있습니다. 그러나 결코 그렇게 우세한 것은 아닙니다. 예를 들면 :

ISO 8601

count-since-epoch가 Unix epoch를 사용한다고 가정하면 버그에 대한 큰 취약성이 열립니다. 이러한 카운트는 사람이 즉시 해독 할 수 없으므로 디버깅 및 로깅시 오류 또는 문제가 쉽게 표시되지 않습니다. 또 다른 문제는 아래에 설명 된 세분성의 모호성입니다.

명확한으로 난 강력하게 대신 직렬화 날짜 - 시간 값을 제안 ISO 8601 : 데이터 문자열이 정수 카운트 이후-시대보다는 교환 YYYY-MM-DDTHH:MM:SS.SSSZ2014-10-14T16:32:41.018Z.

백작 무엇 신기원 때문에

에포크 이후 카운트 시간 추적의 또 다른 문제는 일반적으로 사용되는 최소 4 단계의 해상도를 사용하는 시간 단위입니다.

epoch에서 초, 밀리 초, 마이크로 초 또는 나노초 단위로 계산하는 다른 소프트웨어를 보여주는 다이어그램.


1
현재 지배적 인 시대가 무엇인지 궁금합니다. 데이터를 기반으로 했습니까?
PascalVKooten

1
@PascalVKooten 다양한 환경과 소프트웨어 시스템에서 다양한 시대가 사용됩니다. 따라서 지배적 인 시대는 없습니다. 여기서 내 요점은 시대를 결코 가정하지 않는 것입니다. 데이터 소스를 파악하십시오. 가장 좋은 방법은 데이터 소스가 epoch 문제를 완전히 피하고 ISO 8601 문자열 인 IMHO를 사용하는 것입니다.
Basil Bourque

1
답장을 보내 주셔서 감사합니다. 나는 많은 것이 있다는 것을 이해하지만, 예를 들어 POSIX가 시간이 지남에 따라 더 인기를 얻었는지 궁금합니다.
PascalVKooten

7

왜 항상 1st jan 1970입니까? 왜냐하면- '1st January 1970'는 일반적으로 "epoch date"라고 부르는 날짜는 Unix 컴퓨터에서 시간이 시작된 날짜이고 해당 타임 스탬프는 '0'으로 표시됩니다. 해당 날짜 이후의 시간은 경과 된 시간 (초)을 기준으로 계산됩니다. 간단히 말해서 ... 모든 날짜의 타임 스탬프는 해당 날짜와 '1970 년 1 월 1 일'사이의 초 단위 차이입니다. 타임 스탬프는 '1970 년 1 월 1 일 자정'의 숫자 '0'에서 시작하여 계속 증가하는 정수입니다. 1 초마다 '1'씩 UNIX 타임 스탬프를 읽을 수있는 날짜로 변환하기 위해 PHP 및 기타 오픈 소스 언어는 내장 함수를 제공합니다.


5

시간 조작의 기준으로 날짜 (1970 년 1 월 1 일)를 사용한 이유가 있나요?

중요한 이유가 없습니다.

Python의 time모듈 C 라이브러리입니다. Ken Thompson에게 왜 획기적인 데이트를 위해 그 날짜를 선택했는지 물어보세요. 누군가의 생일이었을 수도 있습니다.

Excel은 두 가지 시대를 사용합니다. Excel의 다른 버전이 다른 날짜를 사용하는 이유는 무엇입니까?

실제 프로그래머를 제외하고는 아무도 그런 결정이 내려진 이유를 알 수 없습니다 .

과...

날짜가 선택된 이유 는 중요하지 않습니다 . 그냥 그랬어요.

천문학 자들은 자신의 획기적인 날짜를 사용합니다 : http://en.wikipedia.org/wiki/Epoch_(astronomy)

왜? 수학이 잘되게하려면 날짜를 선택해야합니다. 임의의 날짜가 작동합니다.

과거의 날짜는 일반적인 경우 음수를 피합니다.

더 똑똑한 패키지 중 일부는 그레고리력 1 년차를 사용합니다. 왜 1 년차를 사용합니까?
Calendrical Calculations와 같은 책에는 이유가 있습니다. 수학적으로 약간 더 간단합니다.

하지만 생각해 보면 1970 년 1 월 1 일과 1 월 1 일의 차이는 사소한 수학적 오프셋 인 1969에 불과합니다.


1
1/1/1이 선택 되었다면 지금은 초 (2 ^ 31)가 부족했을 것입니다. 현재 우리는 32 비트 운영 체제에 대해 2038 년에 Y2K와 같은 문제에 직면했습니다. en.wikipedia.org/wiki/Year_2038_problem
Chris Nava

1
@Chris Nava : 1/1/1을 사용하는 사람들은 초가 아니라 일을 계산합니다. 20 억 일은 약 5 백만년입니다. 종종 그들은 시간 해상도를 최대화하기 위해 (day, time) 쌍을 유지합니다. 대부분의 날에는 86400 초 밖에 없습니다.
S.Lott

@ S.Lott : 네. 나는 대부분의 소프트웨어가 epoch 이후 몇 초 (분이 아닌)를 계산하기 때문에 1/1/1은 합리적인 시작 날짜로 과거에 이르렀다는 것을 지적했습니다. 따라서, 최근 날짜는 IT 혁명의 시작 컴퓨터 시대로 (및 협회 선정되었다 ;-).
크리스 나바

@Chris Nava : "가장"? "대부분"은 "Linux"를 의미한다고 생각합니다. 다른 OS는 Linux와 같은 방식으로 작동하지 않습니다. 문제는 "합리적"이고 "왜 1970 년 1 월 1 일인가?"입니다. 대답하기 쉬운 질문이 아닙니다. 가장 중요한 것은 대답이 중요하지 않다는 것입니다. "합리적인"사실이지만, 그것은 이유가 아니다 이유 . 그 이유는 에만 켄 톰슨은 대답 할 수있는 무언가이다.
S.Lott


2

Q) "왜 날짜는 1970 년 1 월 1 일부터 계산됩니까?"

A) 가능한 한 최신이어야하지만 과거를 포함해야 합니다 . 많은 사람들이 같은 식으로 느끼기 때문에 다른 중요한 이유가 없었을 가능성이 큽니다.

그들은 과거에 너무 멀리 배치하면 문제가된다는 것을 알았고 미래에 있다면 부정적인 결과를 낳는다는 것을 알고있었습니다. 사건이 미래에 일어날 가능성이 가장 높기 때문에 과거를 더 깊이 살펴볼 필요가 없었습니다.

주석 : 반면에 마야인들은 과거에 대한 많은 지식을 가지고 있었기 때문에 사건을 과거에 배치 할 필요가있었습니다. 캘린더에 모든 일상적인 현상을 배치하기 위해.

타임 스탬프는 캘린더가 아니라 Epoch입니다. 그리고 나는 마야인들이 같은 관점을 사용하여 장기적인 달력을 만들었다 고 믿습니다. (그들은 과거와 아무런 관계가 없다는 것을 잘 알고 있었으며 더 큰 규모로 볼 필요가 있었다는 것을 의미합니다)


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.