왜 날짜는 1970년 1월 1일부터 계산됩니까?
날짜(1970년 1월 1일)를 시간 조작의 디폴트 스탠다드로 사용하는 이유가 있습니까?Python뿐만 아니라 Java에서도 이 표준을 본 적이 있습니다.내가 아는 이 두 가지 언어.같은 기준을 따르는 다른 인기 언어가 있나요?
설명해주세요.
날짜(1970년 1월 1일)를 기본 표준으로 사용
이 질문은 다음 두 가지 잘못된 가정을 합니다.
- 컴퓨팅의 모든 타임 트래킹은 1970년 이래의 카운트로서 행해지고 있습니다.
- 이러한 추적이 표준입니다.
스물다섯 에폭스
컴퓨팅 시간은 1970년 UTC 시작부터 항상 추적되는 것은 아닙니다.이 에폭스 레퍼런스는 널리 사용되고 있지만, 수십 년 동안 다양한 컴퓨팅 환경에서 적어도 24개의 에폭스를 사용해 왔습니다.몇몇은 다른 세기로부터 왔다.범위는 0 ~ 2001 입니다.
여기 몇 가지 있습니다.
기원전 1년 1월 0일
서기 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년 초가 인기 있는 것은 아마도 Unix에 의한 사용 때문일 것입니다.하지만 결코 그렇게 우세하지 않다.예를 들어 다음과 같습니다.
- Excel & 중 개( 개가 Excel © 1-2-3 을 사용하고 있습니다.
January 0, 1900
1899년 12월 31일 - 현재 전 세계에는 코코아(NSDate) 시대를 사용하는 10억 대 이상의 iOS/OS X 디바이스가 있습니다.
1 January 2001, GMT
. - GPS 위성 내비게이션 시스템은
January 6, 1980
갈릴레오는 유럽의 대안으로22 August 1999
.
ISO 8601
count-sin-epoch가 Unix epoch를 사용하고 있다고 가정하면 버그에 대한 큰 취약성이 열립니다.이러한 카운트는 사람이 즉시 해독하는 것이 불가능하기 때문에 디버깅 및 로깅 시 오류 또는 문제가 쉽게 플래그가 표시되지 않습니다.또 다른 문제는 아래에서 설명하는 세분화의 모호성입니다.
대신 날짜-시간 값을 데이터 교환을 위한 명확한 ISO 8601 문자열로 직렬화할 것을 강력히 권장합니다.YYYY-MM-DDTHH:MM:SS.SSSZ
를 들면, 「」와 같이2014-10-14T16:32:41.018Z
.
Epoch 이후의 내용 수
Count-Sinter-Epoch 타임트래킹의 또 다른 문제는 시간 단위이며, 일반적으로 사용되는 해상도는 최소 4가지입니다.
- seconds
원래의 Unix 퍼실리티에서는 초수를 모두 사용했기 때문에 32비트 정수로 저장했을 경우 1970년 이후 초수의 제한에 도달하면 2038년의 문제가 발생합니다. - (밀리초)
번들 java.util을 포함한 오래된 Java 라이브러리에서 사용됩니다.날짜 클래스 및 Joda-Time 라이브러리.
Postgres 등의 데이터베이스에서 사용됩니다.
Java 8의 새로운 java.time 패키지에서 사용됩니다.
UNIX 시간(POSIX 시간)은, 1970년 1월 1일의 0시 Proleptic Coordinated Universal Time(UTC; 프로렙틱 조정 세계시) 이후 경과한 초수로 정의되어 윤초를 카운트하지 않습니다.
왜 항상 1970년 1월 1일인가, 왜냐하면 - 1970년 1월 1일'은 보통 "Epoch date"라고 불리는 UNIX 컴퓨터의 시간이 시작된 날짜이며, 그 타임스탬프는 "0"으로 표시됩니다.그 날짜 이후의 시간은 경과된 초수를 기준으로 계산됩니다.간단히 말하면...모든 날짜의 타임스탬프는 해당 날짜와 '1970년 1월 1일' 사이의 초 단위 차이입니다. 타임 스탬프는 '1970년 1월 1일 미드나잇'의 숫자 '0'에서 시작하여 매 초마다 '1'씩 증가하는 정수입니다. UNIX 타임스탬프를 읽을 수 있는 날짜로 변환하기 위해 PHP 및 기타 오픈 소스 언어가 기본으로 제공됩니다.기능들.
시간 조작의 기준으로서 날짜(1970년 1월 1일)를 사용한 이유가 있습니까?
그건 중요하지 않아.
이 python python time
module은 C 라이브러리입니다.Ken Thompson에게 왜 그가 그 날짜를 획기적인 날짜로 선택했는지 물어보세요.누군가의 생일이었나 봐요.
Excel은 두 가지 다른 시대를 사용합니다.엑셀 버전이 다르면 날짜도 달라지는 이유가 있나요?
실제 프로그래머를 제외하고는 아무도 왜 그런 결정을 내렸는지 알 수 없을 것이다.
그리고...
왜 날짜가 선택되었는지는 중요하지 않다.그냥 그랬어요.
천문학자들은 그들만의 획기적인 날짜를 사용한다: http://en.wikipedia.org/wiki/Epoch_(astronomy)
왜? 날짜를 정해서 계산해야 해.임의의 날짜로 할 수 있습니다.
과거 날짜의 경우 일반적인 경우 음수를 사용하지 않습니다.
스마트 패키지 중 일부는 프로렙틱 그레고리 1년을 사용한다.1년차가 된 이유라도 있나요?
달력 계산과 같은 책에는 이유가 있습니다. 수학적으로 조금 더 간단하기 때문입니다.
하지만 생각해보면 1/1/1과 1/1/1970의 차이는 1969년에 불과합니다. 이것은 단순한 수학적 오프셋입니다.
1970년 1월 1일 00:00:00am은 POSIX 시간의 제로 포인트입니다.
Q) "왜 1970년 1월 1일부터 계산됩니까?"
A) 가능한 한 최신이어야 하며, 과거도 포함해야 합니다.많은 사람들이 그렇게 느끼기 때문에 다른 특별한 이유는 없었을 것이다.
그들은 만약 그들이 그것을 너무 과거로 옮기면 문제가 된다는 것을 알았고, 만약 그것이 미래라면 부정적인 결과를 낳는다는 것을 알았다.과거에는 사건이 미래에 일어날 가능성이 높기 때문에 더 깊이 들어갈 필요가 없었다.
비고: 반면 마야인들은 이벤트를 과거로 돌릴 필요가 있었습니다.왜냐하면 그들은 과거에 대한 많은 지식을 가지고 있었기 때문입니다.그것에 대해 장기 달력을 만들었습니다.캘린더에 모든 일상적인 현상을 표시하기 위해서요.
타임 스탬프는 달력이 아니라 에폭이다.마야인들은 같은 시각으로 장기 달력을 만들었다고 생각합니다.(과거와는 관계가 없다는 것을 잘 알고 있었기 때문에 더 큰 규모로 볼 필요가 있었을 뿐)
네, C(및 그 가족)입니다.여기가 자바가 찍은 곳이기도 합니다.
언급URL : https://stackoverflow.com/questions/2533563/why-are-dates-calculated-from-january-1st-1970
'programing' 카테고리의 다른 글
Python에서 빈 원으로 산점도를 만드는 방법은 무엇입니까? (0) | 2023.01.04 |
---|---|
python 키워드 "with"는 무엇에 사용됩니까? (0) | 2023.01.04 |
HTML 링크 비활성화 방법 (0) | 2022.12.30 |
진동 시뮬레이션(예: 에서)웹페이지에서 마우스로 파킨슨병)을 앓고 있습니까? (0) | 2022.12.30 |
PDO 쿼리에서 배열을 IN() 조건에 바인드할 수 있습니까? (0) | 2022.12.30 |