컴퓨팅의 날짜 범위가 고대 시대부터 시작되는 이유는 무엇입니까?

컴퓨팅의 날짜 범위가 고대 시대부터 시작되는 이유는 무엇입니까?

읽기HFS+에 대한 Wikipedia 기사, 허용되는 날짜 범위는 1904년 1월 1일부터 2040년 2월 6일까지입니다. 마찬가지로,NTFS 범위1601년 1월 1일 – 60056년 5월 28일입니다. 내 생각에는 파일이 1600년대 또는 1900년대로 설정된 날짜에 수정/생성되어야 하는 경우를 생각할 수 없기 때문에 이것은 터무니없는 생각입니다. 70년대, 80년대 등에서 파일을 생성/수정하는 것이 합리적이기 때문에 Unix 타임스탬프 시대를 이해할 수 있지만, 해당 타임스탬프의 시대를 지금까지 과거로 설정하는 것은 비논리적으로 보입니다.

답변1

이는 단지 NTFS가 아닙니다. Windows 내부 시간 유지는 동일한 시간 형식과 동일한 에포크 시작을 사용하여 수행됩니다.

그들은 원래 Unix 32비트 값이 이미 막다른 골목(해당 카운터는 2038년에 종료됨)으로 알려져 있었고 64비트 시간 값이 이미 VMS에서 사용되었기 때문에 64비트 이진 시간 값을 원한다는 것을 알고 있었습니다. 64비트는 약 180억 개의 서로 다른 시간 값을 계산할 수 있는 기능을 제공합니다. 음, 실제로는 90억에 불과합니다. 왜냐하면 높은 비트 세트의 시간 값은 Windows에서(VMS에서와 마찬가지로) 다른 의미를 갖기 때문입니다. 따라서 날짜와 시간을 계산하는 데에는 "단지" 63비트만 있습니다.

32비트 Unix 시간은 초만 계산되는 반면, Windows 타임스탬프는 100나노초 단위로 계산됩니다. 따라서 시간 값 1은 1601년 1월 1일 자정을 지나 100ns를 의미합니다.

그런데 왜 그런 "역사적" 날짜를 선택합니까?

글쎄, 그것은 요일 및 유사한 계산을 좀 더 쉽게 만듭니다. 왜냐하면 그 해는 모든 종류의 전자 컴퓨터를 포함하는 최초의 400년 주기의 첫 해였기 때문입니다. 일부가 있습니다매우 권위있는 지원그런 이유로.

그러나 현대 컴퓨팅의 맥락에서 다른 시작 연도에 대처하는 데 필요한 추가 컴퓨팅 성능은 맥락상 매우 작을 것이라고 생각합니다.

1601년 1월 1일은 ANSI 날짜가 계산되는 날짜이기도 합니다. 따라서 "Windows 날짜"는 "ANSI 날짜"와 동일한 날짜 숫자이므로 다양한 위치에서 작업이 약간 더 쉬워집니다.

또한 그레고리력의 "1년"으로 표준화되었습니다(당시 모든 곳에서 해당 달력이 채택되지는 않았지만).

그러나 실용적이고 작업적인 이유로 다음을 고려하십시오. 이 날짜/시간 형식을 사용하면 과거 날짜/시간을 동일한 형식을 사용하여 현재 데이터베이스와 나란히 데이터베이스에 표시할 수 있습니다. 예를 들어, 계보 데이터베이스는 400년 이상 전 조상의 생년월일과 사망일을 저장할 수 있으며, 이는 신뢰할 수 있는 형식으로 존재하는 대부분의 기록보다 훨씬 더 긴 기간입니다.

1582년에 일부 국가에서 시작되어 어느 국가에 따라 1926년까지 늦게까지 계속되었던 율리우스력에서 그레고리력으로의 전환 때문에 1201년이나 심지어 1년부터 시작하여 이를 더 일찍 연장할 이유가 없었을 것입니다. ANSI 시간 형식 및 Windows "이진" 시간 형식으로 기록된 모든 날짜는 그레고리력으로 간주됩니다.

그런데 VMS는 유사한 체계를 사용하지만 기본 시간은 1858년 11월 17일입니다. 이는 Smithsonian Asphysical Observatory가 위성 추적을 위한 "기본 날짜"로 선택한 표준입니다. 이것은 천문학자들이 기원전 4713년 1월 1일 정오부터 일수를 계산하는 원래 율리우스력일 체계를 초기에 사용했던 것과 관련이 있습니다. 이 체계에서 1858년 11월 17일은 수정 율리우스력일 숫자 2,400,000이 됩니다. JD 대신 MJD를 사용함으로써 현대 날짜를 단 18비트에 맞출 수 있었는데, 이는 당시 중요한 업적이었습니다. 보다이 기사자세한 내용은 VMS Engineering에서 확인하세요.

답변2

개별적으로 살펴보면 NTFS의 넓은 타임스탬프 범위가 비논리적으로 보일 수 있습니다. 그러나 큰 그림을 보면 그것은 완전히 논리적이다.

운영 체제가 수행하는 작업 중 하나는 대부분의 프로그램에 필요한 일련의 기능을 제공하는 것입니다. 이를 통해 프로그래머는 각 프로그램에 대해 이러한 공통 기능을 다시 작성하는 데 시간을 낭비하는 대신 프로그램에 집중할 수 있습니다. 이러한 기능을 제공하지 않는 운영 체제는 성공할 가능성이 거의 없습니다. Windows와 Linux는 수백 가지의 이러한 기능을 제공합니다.

Windows에는 날짜와 시간을 표현하고 작업하기 위한 일련의 함수가 포함되어 있습니다. 최대한의 유용성을 위해 합리적으로 가능한 한 광범위한 날짜 범위를 포함합니다. 많은 프로그램이 이러한 기능을 다양한 목적으로 사용합니다.

NTFS 파일 시스템은 NT 플랫폼의 일부로 출시되었습니다. 최신 파일 시스템과 마찬가지로 파일 날짜 스탬프를 저장하는 방법이 필요했습니다. 논리적으로 설계자는 애플리케이션에 제공되는 것과 동일한 시스템을 사용하기로 선택했습니다. 이는 개발자의 작업을 더 간단하게 만듭니다. 물론 날짜 범위는 날짜 스탬프에 필요한 것보다 훨씬 넓지만 비용이 들지 않고 문제도 발생하지 않습니다. 날짜 스탬프에 대해 날짜 범위가 더 제한된 다른 시스템을 사용하는 것은 비논리적입니다.

답변3

날짜(및 비트 수준의 형식 사양)는 파일에 레이블을 지정하는 데뿐만 아니라 계산 및 기타 여러 위치에서도 사용됩니다. 예를 들어 역사학자는 자신의 Excel 열에 17세기 또는 18세기의 날짜를 포함하기를 원할 수 있습니다. 또는 천문학자는 이 기간에 행성의 정렬을 계산합니다.

이를 사용하는 사람의 수가 적더라도 손실은 무시할 수 있습니다. 이 형식을 100년, 5000년 또는 60000년 동안 사용할 수 있는지는 별로 중요하지 않습니다. 아마도 향후 50년 동안은 살아남지 못할 것입니다.

관련 정보