시간 형식 지정 및 스토리지 버그
Time formatting and storage bugs컴퓨터 과학에서 시간 포맷과 저장 버그는 시간과 날짜 계산이나 표시에 오류를 일으키는 소프트웨어 버그의 한 종류입니다.이는 산술 오버플로의 가장 일반적인 표현이지만 다른 문제의 결과일 수도 있습니다.이러한 유형의 버그의 가장 잘 알려진 결과는 Y2K 문제이지만, 다양한 프로그래밍 결함에 따라 문제를 일으켰거나 일으킬 수 있는 다른 중요한 날짜 또는 시간이 많이 존재합니다.
1975년
1975년 1월 4일, DEC 시스템-10 운영 체제에서 날짜에 사용되었던 12비트 필드가 오버플로되었습니다.대체 포맷이 개발되는 동안 이 버그와 관련된 수많은 문제와 충돌이 있었습니다.[1]
1978년
PDP-8 컴퓨터용 Digital Equipment Corporation OS/8 운영 체제는 1970년부터 1977년까지 3비트만 사용했습니다.[2]
이는 COS-310 운영체제를 개발할 때 인정된 것으로 날짜가 다르게 기록되어 있습니다.[3]
1993년
클래식 맥 OS용으로 출시된 여러 시에라 엔터테인먼트 게임들은 1993년 9월 18일에 실행되었을 때 동결되기 시작했습니다.Mac 버전의 시에라 크리에이티브 인터프리터(Mac SCI)에 문제가 발생하면 오버플로와 관련된 문제로 인해 지연을 처리하려고 할 때 게임이 "락업"됩니다.Mac SCI는 매킨토시 시대인 1904년 1월 1일부터 현재 시간을 초 단위로 구하고 12시간으로 나누어 지연이 얼마나 지속되어야 하는지를 결정하기 위해 날짜를 사용하려고 시도했습니다.모토로라 68000에서 분할이 처리되어 분할 때문에 오버플로우가 감지되면 발생하지 않지만, Mac SCI는 분할이 발생한 것과 상관없이 계속 진행되어 결국 1초가 지연되어 18시간 등의 지연으로 처리되었습니다.시에라는 거의 14년 동안 이 문제를 해결한 MCDATE라는 패치를 출시했습니다.[4][5]
1997년
1980년 1월 1일부터 발생한 4마이크로초 단위의 수를 기반으로 하는 도메인/OS 클럭은 1997년 11월 2일 47비트를 넘겨 패치되지 않은 시스템을 사용할 수 없게 만들었습니다.[6]
1999년
2000년 이전의 지난 몇 달 동안, 그 당시에 임박했던 Y2K 문제보다 덜 홍보된 두 개의 다른 날짜 관련 이정표가 발생했습니다.
첫 번째 GPS 롤오버
GPS 날짜는 주 번호와 요일 번호로 표시되며 주 번호는 10비트 값으로 전송됩니다.이는 GPS 시대인 1980년 1월 6일 일요일 이후 1,024주(약 19.6년)마다 날짜가 다시 설정됨을 의미합니다. 1999년 8월 21일 23시 59분 47초에 처음으로,[7] 2019년 4월 6일 23시 59분 42초에 두 번째로 발생했으며 2038년 11월 20일에 다시 발생할 것입니다.[8]이 문제를 해결하기 위해 현대화된 GPS 네비게이션 메시지는 13비트 필드를 사용하며, 이 필드는 8,192주(157년)마다 반복되며 2137년까지 0으로 돌아가지 않습니다.[9]
9/9/99
많은 프로그램 또는 데이터 세트에서 "9/9/99"는 해결되지 않은 날짜를 나타내는 로그 값으로 사용되거나 더 이상의 데이터가 세트에 없음을 나타내는 터미네이터로 사용되었습니다.이것은 이것이 1999년 9월 9일을 나타내는 실제 날짜가 도착했을 때 문제를 제기했습니다.[7]
2000년도
두 자리 숫자 연도 표시
Y2K 문제에 대한 특정한 임시 수정으로 인한 후속 문제는 21세기에 여러 지점에서 발생할 것입니다.일부 프로그램은 두 자리 숫자 연도를 계속 사용함으로써 Y2K를 준수하도록 만들었지만, 해당 연도 이전의 임의 연도를 선택하면 20xx로 해석되고 그 이후에는 19xx로 해석됩니다.[10]
예를 들어, 프로그램이 2000년부터 2068년까지의 두 자리 숫자 연도 값 00–68과 1969년부터 1999년까지의 값 69–99를 처리하도록 변경되었을 수 있습니다.[11]그러한 프로그램은 2068년 이후의 해를 올바르게 다룰 수 없을 것입니다.
출생 연도(또는 다른 과거 연도)를 계산하기 위해 필요한 응용 프로그램의 경우, 1900년 문제를 극복하기 위해 오랫동안 이러한 알고리즘이 사용되었지만 100세 이상의 사람들을 인식하지 못했습니다.
2001년
2001년 9월 9일 01:46:40("빌레니엄")에 유닉스 시대 이후 10억 초를 넘는 시간을 기록하기 위해 9자리의 문자열을 사용한 시스템.문제는 널리 퍼지지 않았습니다.[12]
2007년
시에라 엔터테인먼트의 클래식 맥 OS용 게임들은 MCDATE 프로그램과 함께 패치되거나 패치가 내장된 상태로 출시된 후 2007년 5월 28일부터 동결되기 시작할 예정입니다.#Year 1993 프로그램과 마찬가지로 이는 Mac SCI에서 날짜를 사용하여 지연 시간을 결정하려고 할 때 문제가 발생했기 때문입니다.맥 SCI는 1904년 1월 1일 매킨토시 시대 이래로 현재의 초수가 걸리고 432,000,000초를 뺀 다음 모토로라 68000을 통해 12시간으로 나누어 지연이 얼마나 지속되어야 하는지를 결정하기 때문에 MCDATE 패치가 적용된 프로그램은 동결됩니다.2007년 5월 28일, 모토로라 68000은 오버플로 방지로 인해 다시 분리되지 않으며, 이는 Mac SCI가 무시하는 것입니다.[4]
2010년
일부 시스템은 한 해가 지난 2010년으로 넘어가자 문제가 발생했습니다.이것은 일부 언론에서 "Y2K+10" 혹은 "Y2.01k" 문제로 불렸습니다.[13]
문제의 주요 원인은 16진수 숫자 인코딩과 숫자의 BCD 인코딩 사이의 혼동이었습니다.숫자 0 ~ 9는 16진수와 BCD 모두 0016 ~ 09로16 인코딩됩니다.그러나 10진수 10은 16진수로 0A16, BCD는 10으로16 인코딩됩니다.따라서 16진수 인코딩으로 해석되는 BCD 10은16 십진수 16을 잘못 나타냅니다.
예를 들어, SMS 프로토콜은 날짜에 대해 BCD 인코딩을 사용하므로 일부 휴대 전화 소프트웨어는 메시지의 날짜를 2010년이 아닌 2016년으로 잘못 보고했습니다.Windows Mobile은 이러한 결함의 영향을 받은 것으로 보고된 첫 번째 소프트웨어입니다. WM6는 2010년 1월 1일 이후에 발송된 수신 SMS 메시지의 날짜를 2010년에서 2016년으로 변경했습니다.[14][15]
해당되는 다른 시스템에는 EFTPOS 단말기와 [16]PlayStation 3(Slim 모델 제외)이 포함됩니다.[17]
소니의 플레이스테이션 3는 2010년을 윤년으로 잘못 취급하여, 존재하지 않는 2010년 2월 29일이 2010년 3월 1일에 표시되었고, 프로그램 오류가 발생했습니다.[18]
가장 중요한 결함은 2천만장 이상의 은행 카드를 사용할 수 없게 된 독일과 디지털 패스 고객 식별 칩이 작동을 멈춘 벨기에 씨티은행에서 발생했습니다.[19]
2011년도
대만은 공식적으로 1912년 그레고리력을 1년으로 간주하는 민궈 달력을 사용합니다.그레고리안 2011년은 ROC 100년으로 첫 세 자리 숫자 연도입니다.[20]
2013년
딥 임팩트 우주 탐사선은 타임 태깅 문제로 인해 2013년 8월 11일 지구와의 통신이 끊겼습니다.[21]
2019년
2차 GPS 롤오버
2019년에는 두 번째 GPS 주간 번호 롤오버가 발생했습니다.
일본력의 변천
2019년 4월 30일, 아키히토 일왕은 자신의 아들 나루히토에게 양위하였다.일본의 해는 전통적으로 각 천황의 치세에 해당하는 연호로 불리기 때문에 다음날 나루히토가 즉위한 후 레이와(令和)라는 연호가 새롭게 생겨났습니다.1989년 1월 7일 히로히토가 사망하고 아키히토의 치세가 컴퓨터 사용의 증가와 거의 일치했기 때문에, 대부분의 소프트웨어는 시대 변화에 대한 올바른 행동을 보장하기 위해 테스트되지 않은 반면, 테스트는 2019년 4월 1일까지 새로운 시대 이름이 공개되지 않아 더욱 복잡해졌습니다.따라서 새로운 시대를 예상하지 못한 소프트웨어에서 오류가 예상되었습니다.
2020년
2020년 1월 1일, WWE 2K20과 스타워즈 제다이: 폴른 오더가 충돌했습니다.이러한 결함은 패치가 출시될 때까지 연도를 2019년으로 다시 설정해야만 피할 수 있었습니다.[22][23]또한 Crystal Reports 8.5는 2020년부터 특정 보고서를 생성하지 못합니다.[24]
뉴욕시와 다른 지역의 주차장 미터기는 2020년부터 신용카드를 결제 수단으로 받을 수 없었습니다.해결 방법이 구현되었지만 각 미터를 개별적으로 업데이트해야 했습니다.뉴욕에서는 미터기가 1월 9일까지 고쳐지지 않을 것으로 예상했습니다.[25][26]
폴란드에서는 5,000개의 금전 등록기가 날짜를 제대로 출력하지 못하게 되었습니다.[27]
Suunto sports 스마트 워치는 평일 계산에서 +2 단계(예: WED보다는 FRI, THU보다는 SAT)로 표시되는 오류를 나타냈습니다.Suunto Spartan 모델 시계의 경우 펌웨어 릴리스 2.8.32로 버그를 수정했습니다.[28]
클래식 맥 OS
클래식 맥 OS 버전 6, 7, 8의 제어판에서는 날짜를 2019년 12월 31일까지로 설정할 수 있습니다.[29][30]
2021년
삼성 사용자들은 최신 One UI 3.0 업데이트 또는 Android 11에서 실행 중인 전화기가 2021년부터 배터리 및 충전 통계에 액세스할 수 없다고 보고했습니다.영향을 받는 기기는 사용 통계를 보고하지 않으므로 해당 섹션은 비워 둡니다.[31][32]
2022년
yymmddd 형식으로 저장된 날짜HHMM은 2022년 1월 1일에 오버플로된 부호 32비트 정수로 변환되었으며, 이는 2=2147483648입니다.특히 Microsoft Exchange의 멀웨어 검색 구성 요소 업데이트 번호가 영향을 미쳤으며, 이는 최신 업데이트를 확인하기 위한 수학적 검사에 사용되는 것으로 보입니다.[33][34]
2004년부터 2012년 사이에 제작된 혼다와 아큐라 자동차에 GPS 내비게이션이 장착된 차량은 2002년으로 잘못 표기되어 있었습니다.이 문제는 GPS 시대의 오버플로우 때문이었습니다.[35][36]이 문제는 2022년 8월 17일에 해결되었습니다.[37]
2025년
일본에서는 아직 업데이트되지 않은 일본 달력을 사용하는 일부 오래된 컴퓨터 시스템이 쇼와 시대에 따라 여전히 연도를 계산합니다.2025년은 쇼와 100에 해당하는 시스템으로, 소프트웨어가 해당 연도의 두 자리 수를 가정할 경우 문제가 발생할 수 있습니다.[38]
2028년
일부 시스템은 연도를 1900년의 단일 바이트 오프셋으로 저장합니다. 이 오프셋은 255(8비트) 범위를 제공하며 2155까지의 날짜를 안전하게 표현할 수 있습니다.그러나 모든 시스템이 서명되지 않은 바이트를 사용하는 것은 아닙니다. 일부 시스템은 127년의 범위만 허용하는 서명된 바이트로 잘못 코딩되었으며, 이는 소프트웨어의 날짜 필드가 2027년 이후에 부정확하게 되어 예측할 수 없는 동작을 일으킬 수 있음을 의미합니다.ISO 9660 형식을 사용하여 작동하는 여러 광 디스크 소프트웨어가 이에 영향을 미칩니다.[39]
1970년대 후반, Data General Nova 및 Eclipse 시스템에서 World Computer Corporation(신용 연합 응용 프로그램 실행)은 128년(7비트 – 참고 1900+128=2028), 12개월(4비트) 및 31일(5비트) 동안 16비트 날짜 필드를 사용하여 날짜 형식을 만들었습니다.이를 통해 서명되지 않은 함수를 사용하여 날짜를 직접 비교할 수 있습니다.HP 3000을 비롯한 일부 시스템에서는 패치가 외부 컨설턴트에 의해 개발되었지만 여전히 이 형식을 사용하고 있습니다.[40]
2032년
팜 OS는 1970년 시대의 부호 있는 정수와 1904년 시대의 부호 없는 정수를 시스템 클럭 및 파일 날짜와 같은 [41]다양한 시스템 기능에 사용합니다(PDB 형식 참조).이로 인해 Palm OS는 2038년 문제에 취약하지만 Palm OS는 연도 값을 저장하기 위해 7비트 필드를 사용하며 1904년과는 다른 에포크 카운트를 사용하여 최대 연도가 2031년(1904년+127년)이 됩니다.[42]
2036년
네트워크 시간 프로토콜에는 2038년이 아닌 2036년 2월 7일 UTC 06:28:16에 나타나는 2038년 문제와 관련된 오버플로 문제가 있습니다.NTP에서 사용하는 64비트 타임스탬프는 초 단위의 32비트 부분과 분수 초 단위의 32비트 부분으로 구성되어 있으며, NTP는 2초32(136년)마다 롤오버되는 시간 척도와 2초−32(233피코초)의 이론적 해상도를 제공합니다.NTP는 1900년 1월 1일의 에포크를 사용합니다.첫 번째 롤오버는 UNIX 연도 2038 문제 이전인 2036년에 발생합니다.[43][44]
2038년
유닉스 타임 롤오버
유닉스 운영 체제의 원래 구현은 시스템 시간을 유닉스 시대를 지난 32비트 부호 정수(1970년 1월 1일 목요일 자정 UTC 00:00:00)로 저장했습니다.이 값은 2038년 1월 19일 화요일 03:14:07 UTC 이후에 롤오버됩니다.이 문제는 시스템 시간을 64비트 부호 정수로 저장함으로써 대부분의 현대 유닉스 및 유닉스 계열 운영 체제에서 해결되었지만 개별 응용 프로그램, 프로토콜 및 파일 형식도 변경해야 합니다.
윈도우 C 런타임 라이브러리
유닉스 타임 롤오버 문제와 마찬가지로 윈도우의 C 런타임 라이브러리에 있는 32비트 버전의 gmtime도 비슷한 문제를 가지고 있습니다.[45]
이 문제는 Oracle의 Windows용 Access Manager 버전 10.1.4.3에서 이미 나타났습니다.Identity Console 구성 요소는 UI 기본 설정이 포함된 쿠키를 향후 500,000,000초(15년, 308일, 53분 20초)로 설정합니다.이는 2038년 1월 19일 이후이므로 2022년 3월 17일 02:20:48 이후 특정 검색 활동에 대해 예외를 부여합니다. 왜냐하면 gmtime_r() 호출은 쿠키에 쓸 날짜로 제공된 번호를 변환할 수 없기 때문입니다.[46]2009년 6월 18일, 오라클은 2022년 4월 6일 패치 번호 33983548을 발표했습니다.
세 번째 GPS 롤오버
세 번째 GPS 주간 번호 롤오버는 2038년 11월 20일 23:59:37 UTC에 발생합니다.
2040년
초기 애플 매킨토시 컴퓨터는 1904년 1월 1일 00:00:00 이후로 시간을 부호 없는 32비트 숫자로 실시간 시계(RTC)와 HFS 파일 시스템에 저장합니다.2040년 2월 6일 06:28:15 이후(예: 시대로부터 2-1초32) 1904년으로 단축됩니다.[47] 이 외에도 Apple의 모든 최신 Macintosh 컴퓨터의 기본 형식인 HFS+도 영향을 받습니다.대체 Apple 파일 시스템을 사용하면 이 문제가 해결됩니다.
Apple II 컴퓨터용 ProDOS는 두 자리 숫자의 연도 번호만 지원합니다.Y2K 문제를 방지하기 위해 애플은 1940년부터 2039년까지의 숫자를 나타내는 기술 노트를 발행했습니다.[48]플랫폼용 소프트웨어가 2040년부터 시작하는 날짜를 잘못 표시할 수도 있지만, ProDOS 및 애플리케이션 소프트웨어를 4095년까지 지원하기 위해 타사에서 업데이트하는 작업이 진행 중입니다.[49]
2042년
2042년 9월 18일, S/370 IBM 메인프레임의 TODC(Time of Day Clock)와 현재의 zSeries를 포함한 그 후속 제품이 롤오버됩니다.[50]
구형 TODC는 2 마이크로초−12(0.244 ns) 단위의 64비트 카운트로 구현되었으며, 표준 기준은 UT 기준 1900년 1월 1일이었습니다.1999년 7월, 확장된 TODC 클럭이 발표되었는데, 이 클럭은 오른쪽으로 연장되었습니다(즉, 확장된 비트는 원래 비트보다 덜 중요합니다).실제 해상도는 모델에 따라 다르지만 형식은 일치하므로 2마이크로초52 후에 롤오버됩니다.[50]
TODC 값은 사용자 모드 프로그램에서 액세스할 수 있으며 이벤트의 타이밍 및 고유 ID 생성에 자주 사용됩니다.
IBM은 최근 컴퓨터에 더 긴(128비트) 하드웨어 형식을 정의하고 구현했는데, 이는 양 끝의 타이머를 최소 8비트 추가로 연장하는 것이지만, 많은 프로그램은 더 긴 타이머의 액세스 가능한 하위 집합으로 남아 있는 64비트 형식에 계속 의존하고 있습니다.
2048년
ATSC 시스템은 1980년 1월 6일부터 시작되는 서명된 32비트 GPS 초의 사용으로 인해 2048년 이후에 상술한 DVB 문제와 유사한 문제가 발생할 것입니다.
ERP 시스템 SAP S/4HANA의 용량 계획 로직은 2048년 1월 19일(1980년 1월 1일부터 24,855일)까지만 지원합니다.이는 생산, 유지보수 및 검사 계획과 관련된 것입니다.[51]
2069년
다음을 사용하여 두 자리 숫자 연도를 파싱하기 위한 Single UNIX Specification에 따르면, "[69,99] 범위의 값은 1969년부터 1999년까지를 포함하고, [00,68] 범위의 값은 2000년부터 2068년을 포함한다"고 합니다.[52]strptime()
, 두 자리 숫자의 연도 "69"는 2069년이 아닌 1969년으로 해석될 것입니다.
2079년
일 수 32,768일 및 65,536일
임의 날짜(또는 에포크) 이후 날짜를 일 수로 저장하는 프로그램은 날짜 값이 응용 프로그램에 예상되는 시간 범위를 충분히 초과할 수 있을 정도로 충분히 넓지 않으면 롤오버 또는 랩어라운드 효과에 취약합니다.서명된 16비트 이진값은 에포크 날짜로부터 32,768(215)일 후에 롤오버되어 음의 값을 생성합니다.일부 메인프레임 시스템에서는 1900년 1월 1일 이후의 날짜를 인코딩하여 1989년 9월 18일의 롤오버 날짜에 예상치 못한 마이너스 날짜 수를 생성했기 때문에 소프트웨어 장애가 발생했습니다.마찬가지로 부호가 없는 16비트 이진 일 수는 65,536 (216)일 후 오버플로 수가 되며, 이는 0 값으로 잘립니다.1900년 1월 1일의 에포크를 사용하는 소프트웨어의 경우, 이는 2079년 6월 6일에 발생합니다.[53]
2080년
시리즈 40을 실행하는 일부 노키아 전화(예: Nokia X2-00)는 2079년 12월 31일까지의 날짜만 지원하므로 이후 날짜를 표시할 수 없습니다.한 가지 해결 방법은 2080년(호환 윤년) 대신 1996년, 2024년 또는 2052년을 사용하여 주 화면에 정확한 요일, 날짜 및 월을 표시하는 것입니다.
연도를 두 자리 숫자 값 00으로 저장하는 시스템..99는 많은 RTC와 마찬가지로 내부적으로만 2079년 12월 31일부터 IBM PC 및 DOS 시대인 1980-01-01까지 롤오버될 수 있습니다.
2100년
DOS 및 윈도우 파일 날짜 API 및 변환 기능(INT 21h/AH=2Ah 등)은 공식적으로 2099년 12월 31일까지의 날짜만을 지원합니다.따라서 DOS 기반 운영 체제는 물론 다른 형식을 FAT/DOS 형식으로 변환하는 응용 프로그램도 2100년 1월 1일부터 예기치 않은 동작을 보일 수 있습니다.
2100년은 윤년이 아니기 때문에 또 다른 문제는 2100년 2월 28일 말에 나타날 것입니다.윤년 알고리즘의 많은 일반적인 구현이 불완전하거나 단순화되어 있기 때문에 2100을 윤년으로 잘못 가정하여 날짜가 2100년 3월 1일이 아닌 2100년 2월 28일에서 2100년 2월 29일로 롤오버될 수 있습니다.
소니 플레이스테이션 4 뿐만 아니라 닌텐도 DS와 게임큐브도 2099년까지만 날짜를 잡을 수 있습니다.닌텐도 DS의 경우, 이 시스템은 2099년 12월 31일 이후로 시간을 앞당기지 않을 것이고, 반면 게임큐브와 PS4는 2100년 이후로 롤오버될 것입니다. 비록 게임기 사용자들이 그렇게 멀리 떨어진 날짜와 시간을 수동으로 입력할 수는 없지만 말입니다.
2106년
기존의 많은 파일 형식, 통신 프로토콜 및 응용 프로그램 인터페이스는 유닉스의 변형을 사용합니다. time_t
날짜 형식, 유닉스 에포크(UTC 자정, 1970년 1월 1일) 이후 초수를 부호 없는 32비트 이진 정수로 저장합니다.이 값은 2106년 2월 7일 06:28:15에 롤오버됩니다.즉, 이때 1970년 1월 1일 이후의 초수는 16진수로 FFFF FFFF입니다.
이 스토리지 표현 문제는 시스템 시간을 64비트 부호 정수 값으로 저장하고 운영하는 프로그램과는 무관합니다.
2108년
원래 1981년 2월 25일 86-DOS 0.42와 함께 도입되어 MS-DOS, PC DOS, DR-DOS 등으로 이월된 FAT 파일 시스템에 저장된 날짜 타임스탬프는 2107년 12월 31일 말에 오버플로됩니다.마지막 수정 날짜 스탬프(그리고 DELWATCH 2.0+의 경우 파일 삭제 날짜 스탬프, 그리고 선택적으로 DOS 7.0+의 경우 마지막 액세스 날짜 스탬프 및 생성 날짜 스탬프)는 1980년과 비교하여 연도가 부호 없는 7비트 숫자(0–127)로 표시된 디렉토리 항목에 저장됩니다.따라서 2108년 이후의 날짜를 표시할 수 없습니다.이러한 날짜를 검색하기 위해 정의된 API 기능은 2099년 12월 31일까지의 날짜만을 지원합니다.
이는 내부적으로 FAT 파일 수정 타임스탬프를 사용하므로 ZIP 아카이브 파일 형식에도 영향을 미칩니다.
2137년
GPS 날짜는 주 번호와 요일 번호로 표시되며 주 번호는 처음에 10비트 값을 사용하고 현대화된 GPS 네비게이션 메시지는 13비트 필드를 사용합니다.10비트 시스템은 1980년 1월 6일 일요일(GPS 시대) 이후 1024주(약 19.6년)마다 롤오버되고 13비트 시스템은 8192주마다 롤오버됩니다.13비트 시스템은 2137년에 0으로 롤오버 될 것입니다.[7][8]
2262년
1970년부터 64비트 부호 정수를 사용하여 나노초를 계산하는 타임 키핑 시스템도 있으며, 2262년 4월 11일 23:47:16에 오버플로됩니다.바둑 프로그래밍 언어의 UnixNano
API가 그 예입니다.[54]다른 예로는 Python pandas의 타임스탬프 개체,[55] C++ chrono::system_clock, [56][failed verification – see discussion]QEMU 타이머 등이 있습니다.[57]
2286년
유닉스 시간을 기록하기 위해 길이 10자의 문자열을 사용하는 시스템에서는 2286년 11월 20일 17:46:40 이후 100억 초 이상의 시간을 보고하는 데 문제가 있을 수 있습니다.
4,000년, 8,000년 등등.
수천 년의 시간 척도로 볼 때 그레고리력은 천문학적인 계절보다 뒤떨어집니다.이것은 지구의 자전 속도가 점차 느려지고 있기 때문인데, 이것은 시간이 지남에 따라 하루를 약간 더 길게 만들고(조석 가속도와 윤초 참조), 한 해는 더 균일한 지속 시간을 유지하기 때문입니다.
19세기에 존 허셜 경은 그레고리력을 같은 기간에 970번의 윤일 대신 4000년마다 969번의 윤일로 수정할 것을 제안했습니다.[58]이렇게 되면 평년은 365.24225일로 줄어들게 됩니다.허셜의 제안은 4000년과 그 수를 도약 대신에 보편적인 것으로 만들 것입니다.이 수정은 그 이후 종종 제안되었지만 공식적으로 채택된 적은 없습니다.[59]
현재 대부분의 소프트웨어(Excel, JavaScript 및 R 포함)가 4000년과 8000년을 윤년으로 인식하고 있지만, SAS는 "4000년 규칙"을 채택했습니다.따라서 현재 소프트웨어에서는 SAS와 다른 소프트웨어 간의 날짜 변환이 4000년 2월 28일 이후 동기화되지 않게 됩니다.[60][61]
4501년
Microsoft Outlook에서는 4501년 1월 1일을 "none" 또는 "empty"의 자리 표시자로 사용합니다.[62][63]
1만년
만 년은 다섯 자리 숫자가 있는 그레고리안의 첫 해가 될 것입니다.많은 사람들이 처음에는 이런 유형의 문제가 실제로는 발생하지 않을 정도로 올해가 멀다고 생각하지만, 프로그램과 컴퓨터 코드는 원래 소프트웨어나 하드웨어의 수명을 훨씬 지나서 재활용되는 경향이 있습니다.기원전 10천년 이전의 날짜뿐만 아니라 10의 거듭제곱인 미래의 모든 연도도 유사한 인코딩 문제에 직면합니다.[64]
예
이 문제는 스프레드시트 프로그램인 2023년 현재 Microsoft Excel에서 볼 수 있는데, 이 프로그램은 기본 1900 날짜 시스템을 사용할 경우 1899년 12월 31일(1일은 1900년 1월 1일) 이후 날짜를 1900년 가상의 윤일로 저장합니다.또는 1904년 날짜 체계를 사용하는 경우 1904년 1월 1일 이후의 일수(1일은 1904년 1월 2일)로 저장되며 윤년 문제는 없습니다.계산이 가능한 최대 날짜는 9999년 12월 31일입니다.[65][66]
30,828년
828년 9월 14일부터 Windows(윈도우)는 이날 이후의 날짜를 수락하지 않으며 시작 시 NTFS의 "잘못된 시스템 시간"에 대한 오류를 표시됩니다.이는 1601년 1월 1일 00:00:00.0000000 UTC 이후 100나노초 간격에 해당하는 64비트 값인 Windows의 FILETIME 값이 UTC 02:48:05.4775808에 가능한 최대 값을 초과하기 때문입니다.[67]
32,768년 65,536년
연도를 16비트 값으로 처리하는 프로그램에서는 값이 부호 있는 정수로 처리되는지 또는 부호 없는 정수로 처리되는지에 따라 32,768년 또는 65,536년 문제가 발생할 수 있습니다.
32,768년 문제의 경우, 32,767년 이후의 연도는 -32,768로 시작하여 음수로 해석될 수 있습니다.[68]65,536년 문제는 65,536년을 0년으로 나타내면서 나타날 가능성이 더 높습니다.[69]
10만년
10만 년은 여섯 자리 숫자가 있는 첫 그레고리안 해가 될 것입니다.
275,760년
자바스크립트의 날짜 API는 1970년 1월 1일부터 날짜를 밀리초 단위로 저장합니다.날짜는 시대로부터 ±100,000,000일의 범위를 가지며, 날짜 API를 사용하여 자바스크립트로 작성된 프로그램은 AD 275,760년 9월 13일 이후의 날짜를 저장할 수 없습니다.[70]
292,277,026,596년
특정한 문제가 있는 해들은 미래에 지금까지 발생합니다 (지구, 태양, 인류 그리고 심지어 우주의 수명에 대한 예측을 훨씬 뛰어 넘습니다) 그것들은 주로 이론적인 관심, 농담, 그리고또는 "solved"의 합리적인 정의에 대해 관련 문제가 진정으로 해결되지 않는다는 표시.
292,277,026,596년 문제(미래의 약 2.9×10년11)는 64비트 유닉스 시간이 UTC 12월 4일 일요일 15:30:08 이후에 오버플로될 때 발생합니다.[71][72]
상대시간오버플로
마이크로소프트
Microsoft Windows 7, Windows Server 2003, Windows Server 2008 및 Windows Vista에서는 TCP 연결 시작 정보가 32비트 부호 없는 정수를 사용하여 100분의 1초 만에 저장되어 497일 후에 오버플로가 발생하고 TCP 연결이 실패했습니다.[73]
Microsoft Windows 95 및 Windows 98에서는 VTDAPI(가상 디바이스 드라이버)에서 2^32밀리초 롤오버 문제가 발생했습니다.VXD). 이로 인해 시스템이 49.7일 후에 중단되었습니다.[74]
보잉
보잉 787 항공기에는 시간 저장과 관련된 소프트웨어 문제가 최소 두 가지 이상 발생했습니다.2015년에는 시간이 100분의 1초 안에 저장되는 오류가 보고되었는데, 이 오류는 서명된 32비트 정수를 사용하여 248일 후에 시스템이 충돌합니다.[75]
2020년 FAA는 가동시간 51일 전에 항공기의 전원이 완전히 꺼지지 않으면 시스템이 잘못된 데이터를 표시하기 시작하는 문제에 대해 감항성 지침을 발표했습니다.[76]
아두이노
아두이노 플랫폼은 밀리() 기능을 통해 상대적인 시간을 제공합니다.이 함수는 49.71일마다 롤오버되도록 설계된 "시작 후 밀리초" 동안 부호 없는 32비트 값을 반환합니다.기본적으로 이는 플랫폼에서 사용할 수 있는 유일한 타이밍 소스이며 프로그램은 롤오버를 처리하기 위해 특별한 주의를 기울여야 합니다.[77]내부적으로, millis()는 타이머 인터럽트를 세는 것을 기반으로 합니다.특정 절전 모드는 인터럽트를 비활성화하므로 절전 모드 중에는 카운터가 전진하지 않도록 합니다.[78]
역사년도문제
또한 역사적인 해의 경우 역사적 사건을 처리할 때 문제가 발생할 수 있습니다. 예를 들어:
참고 항목
참고문헌
- ^ Austein, Rob (2 February 1987). "DATE-86, or The Ghost of Tinkles Past". The RISKS Digest. ACM Committee on Computers and Public Policy. 4 (45). Retrieved 29 December 2014.
- ^ "Directory of linctape-images/os8l/ps-8-system-25.linc".
OS/8 can only store dates for an 8 year period...
- ^ "The Digital Equipment Corporation PDP-8 : Frequently Asked Questions".
COS-310, DEC's commercial operating system for the PDP-8 ... file system is almost the same as OS/8, but dates are recorded differently
- ^ a b "News Notes". InterAction Magazine. Vol. VI, no. 3. Sierra Entertainment. 1993. p. 12.
- ^ "Sierra's Macintosh Timebomb". www.benshoof.org. Retrieved 9 March 2023.
- ^ "Latest News on the Date Bug".
- ^ a b c Janis L. Gogan (9 August 1999). "Applications to the Nines". InformationWeek. Archived from the original on 3 October 2008. Retrieved 21 January 2008.
- ^ a b "GPS week roll over April 6th". cyber.gov.au. Archived from the original on 20 October 2019. Retrieved 10 June 2019.
- ^ "GPS Week Number Rollover - April 2019". GPS.gov. National Coordination Office for Space-Based Positioning, Navigation, and Timing. 6 April 2019. Retrieved 25 February 2023.
- ^ Roger Deschner (21 December 2001). "Identifying and Correcting Dates with Two-Digit Years". University of Illinois at Chicago. Archived from the original on 15 February 2002. Retrieved 19 January 2010. "예 1: 100년 고정 창, 1973 ~ 2072" 참조
- ^ date – 날짜와 시간, The Open Group Base Specifications Issue 6. IEEE 규격 1003.1, 2004 Edition
- ^ Manjoo, Farhad. "Unix Tick Tocks to a Billion". Wired. Retrieved 29 March 2022.
- ^ "Bank of Queensland hit by "Y2.01k" glitch". 4 January 2010. Retrieved 25 February 2023.
- ^ Fried, Ina (5 January 2010). "Windows Mobile glitch dates 2010 texts 2016". CNET. Retrieved 24 February 2023.
- ^ "Windows Mobile phones suffer Y2K+10 bug". 4 January 2010. Archived from the original on 23 October 2013. Retrieved 3 July 2013.
- ^ "Bank of Queensland vs Y2K – an update". 4 January 2010. Archived from the original on 8 January 2010. Retrieved 3 July 2013.
- ^ Loftus, Jack (28 February 2010). "Error: 8001050F Takes Down PlayStation Network". Gizmodo.
- ^ Metrowebukmetro (2 March 2010). "Sony fixes PS3 'leap year' bug". Metro. Retrieved 25 October 2022.
- ^ "Bug de l'an 2010 en Allemagne: plus de 20 millions de cartes bancaires inutilisables" [2010 Bug in Germany: more than 20 million unusable bank cards]. RTL Belgium (in French). 5 January 2010. Retrieved 25 February 2023.
- ^ "Taiwan's Y1C problem". Pinyin News. 2 January 2006.
- ^ "NASA's Deep Space Comet Hunter Mission Comes to an End". Jet Propulsion Laboratory. 20 September 2013. Archived from the original on 14 October 2013. Retrieved 9 July 2022.
- ^ Mansoor, Saqib (1 January 2020). "WWE 2K20 Refuses To Run In 2020". SegmentNext. Retrieved 1 January 2020.
- ^ "Star Wars Jedi: Fallen Order and WWE 2K20 are not launching due to a "2020" bug [UPDATE]". DSOGaming. 1 January 2020. Retrieved 19 November 2020.
- ^ "sql – ODBC Connection / Crystal Reports". Stack Overflow. Retrieved 19 November 2020.
- ^ "Parking Meters Across NYC Not Accepting Credit Cards, Were Never Programmed To Work In 2020". 2 January 2020. Retrieved 19 November 2020.
- ^ "Y2K20 Parking Meter Software Glitch Causes Citywide SNAFU – Gothamist". Archived from the original on 4 January 2020. Retrieved 4 January 2020.
- ^ Pallus, Patryk (3 January 2020). "Wielka awaria drukarek fiskalnych. Producent naprawia urządzenia, firmy liczą straty". Business Insider (in Polish). Retrieved 4 January 2020.
- ^ "Suunto Spartan Software updates".
- ^ "Technical Note TN1049 Approaching the Millennium: The Mac and the Year 2000". Archived from the original on 13 November 2014. Retrieved 20 January 2020.
- ^ "Vintage Mac 2020 fixes". Retrieved 21 January 2020.
- ^ Jeong, Eugene. "Users report an interesting glitch in Samsung's One UI 3.0, but it has an easy fix". Phone Arena. Retrieved 9 March 2023.
- ^ Bhardwaj, Deveshwar (21 May 2021). "Samsung One UI 3.0/3.1 (Android 11) update bug tracker [Cont. updated]". PiunikaWeb. Retrieved 9 March 2023.
- ^ Born, Günter (1 January 2022). "Exchange Year 2022 Problem: FIP-FS Scan Engine failed to load – Can't Convert "2201010001" to long (2022/01/01 00:00 UTC)". Born's Tech and Windows World. Retrieved 1 January 2022.
- ^ Martin, Alexander (2 January 2022). "Remember the Y2K bug? Microsoft confirms new Y2K22 issue". Sky News.
- ^ "Honda Clocks Are Stuck 20 Years in the Past And There Isn't A Fix". Jalopnik. 6 January 2022. Retrieved 8 January 2022.
- ^ "Shoddy coding has some Honda cars stuck in the year 2002". Engadget. Retrieved 8 January 2022.
- ^ Acoba, Paulo (17 August 2022). "Honda & Acura owners with clock problems report, as of August 17, their time is self-correcting but many are still stuck with the wrong date". Archived from the original on 30 May 2023.
- ^ "Big tech warns of 'Japan's millennium bug' ahead of Akihito's abdication". The Guardian. 25 July 2018.
- ^ "Years since 1900 + seven bits = breakage in 2028". rachelbythebay.com.
- ^ "MPE/iX Release 7.5 Patch Revision 2028 – Beechglen Development Inc".
- ^ "Palm OS® Protein C/C++ Compiler Language & Library Reference" (PDF). Retrieved 12 October 2019.
- ^ "subject:RE: Date limited to 2031". mail-archive.com. Retrieved 12 October 2019.
- ^ David L. Mills (12 May 2012). "The NTP Era and Era Numbering". Retrieved 24 September 2016.
- ^ W. Richard Stevens; Bill Fenner; Andrew M. Rudoff (2004). UNIX Network Programming. Addison-Wesley Professional. pp. 582–. ISBN 978-0-13-141155-5.
- ^ "gmtime, _gmtime32, _gmtime64". Microsoft. Retrieved 8 April 2022.
- ^ "Oracle Access Manager". Oracle Communities. Oracle Corporation. 24 March 2022. Retrieved 25 February 2023.
- ^ Apple Computer, Inc., Inside Macintosh, Volume II, Addison Wesley, 1985, p. 369
- ^ "ProDOS Dates -- 2000 and Beyond". Apple, Inc. Retrieved 6 December 2019.
- ^ "ProDOS 2.5". Retrieved 9 June 2021.
- ^ a b Lascu, Octavian; Eckam, Hans-Peter; Kozakos, George; Pereira, Paulo Vitor (June 2013), Server Time Protocol Planning Guide, IBM Redbooks (4th ed.), IBM, p. 19, ISBN 978-0738438108, retrieved 11 August 2019
- ^ "SAP note 2258792 (access to SAP Support Portal required)". 30 November 2018.
- ^ "strptime - The Open Group Base Specifications Issue 7, 2018 edition". Retrieved 4 March 2023.
- ^ J. R. Stockton (12 April 2009). "Critical and Significant Dates". Archived from the original on 7 September 2015. Retrieved 20 August 2009.
- ^ "time package – time". pkg.go.dev.
- ^ "Time series / Date functionality – pandas 1.3.4 documentation".
- ^ "std::chrono::system_clock". en.cppreference.com.
- ^ "Update version for v5.0.0 release". Archived from the original on 21 January 2021. Retrieved 19 June 2021.
- ^ Herschel, John (1849). Outlines of Astronomy. p. 629.
- ^ Steel, Duncan (2000). Marking Time: The Epic Quest to Invent the Perfect Calendar. John Wiley & Sons. p. 185. ISBN 978-0-471-29827-4.
- ^ 9999년에 크리스 헤메딩거가
- ^ SAS 데이터 세트와 Microsoft Access Database 간의 날짜 및 시간 값 변환, SAS 9.4 문서
- ^ "OlMarkInterval enumeration (Outlook)".
- ^ "Filtering Items Using Query Keywords".
- ^ Glassman, Steve; Manasse, Mark; Mogul, Jeffrey (1 April 1999). Y10K and Beyond. doi:10.17487/RFC2550. RFC 2550. Retrieved 13 September 2021.
- ^ "Differences between the 1900 and the 1904 date system – Office". Microsoft. 5 May 2022. Retrieved 22 February 2023.
- ^ "Excel specifications and limits". Microsoft Support. Retrieved 22 February 2023.
- ^ Thulin, Anders (6 April 2013). "Interpretation of NTFS Timestamps". Forensic Focus. Retrieved 23 July 2019.
- ^ 지금 델파이 사용을 중단해야 하는 10대 재미있는 이유!
- ^ "Folio TechNote". Archived from the original on 9 February 2008. Retrieved 21 January 2008.
- ^ "Date – Javascript". MDN. Retrieved 5 July 2022.
- ^ William Porquet (15 August 2007). "Project 2038 FAQ". Retrieved 5 March 2010.
- ^ "Date/Time Conversion Contract Language" (PDF). Office of Information Technology Services, New York. 23 November 2021. Retrieved 25 February 2023.
- ^ "All the TCP/IP ports that are in a TIME_WAIT status are not closed after 497 days from system startup in Windows Vista, in Windows 7, in Windows Server 2008 and in Windows Server 2008 R2".
- ^ "Computer Hangs After 49.7 Days". 8 May 1999. Archived from the original on 8 May 1999.
- ^ Edgar Alvarez (1 May 2015). "To keep a Boeing Dreamliner flying, reboot once every 248 days". Engadget. Retrieved 2 April 2020.
- ^ Gareth Corfield (2 April 2020). "Boeing 787s must be turned off and on every 51 days to prevent 'misleading data' being shown to pilots". The Register. Retrieved 2 April 2020.
- ^ "The Answer to the Arduino millis() Overflow/Wraparound Question". EEWeb. 22 March 2018.
- ^ "Power – How to keep track of millis during sleep mode".