Ограничения типа данных и программные ошибки могут вызвать ошибки в вычислениях времени и даты или при их отображении. Чаще всего это проявляется как целочисленное переполнение, но может быть результатом и других проблем. Наиболее известным примером такого типа является проблема 2000 года, но существует множество других значимых дат и времён, которые вызывали или будут вызывать проблемы из-за различных недостатков в программировании.

Год 1975 5 января 1975 года 12-битное поле, использовавшееся тогда для дат в операционной системе TOPS-10 для компьютеров DEC PDP-10, переполнилось, и этот баг получил название «DATE75». Значение поля вычислялось как число лет, прошедших с 1 января 1964 года, умноженное на 12, затем добавлялось число месяцев, прошедших с января, умножалось на 31, и, наконец, добавлялось число дней с начала месяца. Максимальное значение, которое может быть представлено беззнаковым 12-битным целым равно , и значение 4095 соответствует 4 января 1975 года:

Поэтому 4 января 1975 является последней датой, которую можно закодировать. Заплата "DATE-75" сдвинула дату, которую можно закодировать, на 1 февраля 2052 года, установив дату переполнения 2 февраля 2052, за счёт использования 3 свободных битов других полей в метаданных файловой системы, но это иногда вызывало проблемы с программным обеспечением, которое использовало эти поля для своих собственных целей. Некоторое программное обеспечение, возможно, поддерживало использование одного дополнительного бита для даты, но имело проблемы с дополнительными битами, что могло привести к некоторым ошибкам 9 января 1986 года.

Год 1978 Операционная система OS/8 компании Digital Equipment Corporation для компьютера PDP-8 использовала знаковый четырёхбитный полубайт для хранения числа годов с 1970 года, а это могло представить только года с 1970 по 1977.

Это было обнаружено при разработке операционной системы и даты записывались другим образом.

Год 1993 Многие игры Sierra Entertainment, выпущенные для классической Mac OS, начали зависать 18 сентября 1993. Проблема заключалась в версии интерпретатора (Mac SCI), которая «блокировала» игру при попытке обработать задержку, что было вызвано переполнением. Mac SCI пытался использовать дату для определения продолжительности задержки, получая текущее время в секундах с 1 января 1904 года (эпоха Macintosh (см. Год 2040), и делил полученное время на 12 часов. Деление проводилось на процессоре Motorola 68000 и не осуществлялось, если в результате деления обнаруживалось переполнение, но Mac SCI продолжал работать, как будто деление было выполнено, что приводило к задержке вместо одной секунды к задержке в 18 часов. Sierra выпустила исправление с названием MCDATE, которое решило проблему почти на 14 лет (см. Год 2007).

Год 1997 В операционной системе компании Apollo Computer абсолютное время хранилось как знаковое 48-битное целое, соответствующее числу 4-микросекундных интервалов с 1 января 1980 года. Это значение переполнилось 2 ноября 1997 года, сделав необновлённые системы неработоспособными.

Год 1999 За последние несколько месяцев до наступления 2000-го года случилось две проблемы, связанные с датами, но получившими меньше освещения, чем тогдашняя надвигающаяся проблема Y2K.

Первое переполнение GPS

Даты в системе GPS представлены номером недели и номером дня недели, при этом номер недели передаётся как десятибитное значение. Это означает, что каждые 1024 недели (около 19,6 лет) после воскресенья 6 января 1980 года (GPS эпоха, дата сбрасывается. Это произошло первый раз в 23:59:47 21 августа 1999 года, второй раз в 23:59:42 UTC 6 апреля 2019 года и следующий раз произойдёт 20 ноября 2038 года. Чтобы решить эту проблему, в модернизированных навигационных сообщениях GPS используется 13-битное поле, которое повторяется только каждые 8192 недели (157 лет) и не вернётся к нулю до 2137 года.

9.9.99

Многие устаревшие программы или наборы данных использовали дату «9.9.99» как признак конца для обозначения неприсвоенной даты или как конец набора данных, чтобы показать, что дальше данных нет. Это приводило к сбоям многих систем при наступлении реальной даты, которую она представляла: 9 сентября 1999 года.

Год 2000 Представление года в виде двух цифр

Термин «проблема 2000-го года», или просто Y2K, относится к потенциальным ошибкам, связанным с форматированием и хранением календарной даты для 2000-го года и далее. Многие программы представляли четырёхзначные года только последними двумя знаками, что делает год 2000 неотличимым от 1900-го года. Неспособность компьютерных систем правильно распознавать даты могла привести к коллапсу глобальной инфраструктуры в отраслях, зависящих от компьютеров.

Для приложений, которым необходимо рассчитывать год рождения (или другой год в прошлом), такой алгоритм давно использовался для решения проблемы 1900-го года, но он не может распознать людей старше 100 лет.

Год 2001 Системы, использующие строку длиной девять символов для записи времени в секундах с начала эпохи Unix имели проблемы с отображением времени, выходящего за пределы одного миллиарда секунд после начала эпохи 9 сентября 2001 года в 01:46:40. Проблемы не были широко распространены.

Год 2007 Игры от Sierra Entertainment для Classic Mac OS, которые были пропатчены программой MCDATE, или выпущены позже уже со встроенным исправлением, начали зависать 28 мая 2007 года. Как и в случае с проблемой 1993-го года, это было связано с ошибкой в Mac SCI при попытке использовать дату для определения продолжительности задержки. Программы с патчем MCDATE зависают, потому что Mac SCI берёт текущее количество секунд с начала эпохи Macintosh 1 января 1904 года, вычитает 432 000 000 секунд, а затем делит на 12 часов (на процессоре Motorola 68000), чтобы определить, как долго должны длиться задержки. 28 мая 2007 года, процессор Motorola 68000 опять не смог выполнить деление из-за защиты от переполнения, но Mac SCI игнорирует факт, что фактического деления не было.

Год 2010 Некоторые системы имели проблемы, когда год сменился на 2010. В СМИ это явление упоминалось как проблема «Y2K+10» или «Y2.01k».

Главной причиной проблемы было смешение шестнадцатеричной и двоично-десятичной систем кодирования чисел. Числа от 0 до 9 в обоих системах кодировались от 00 до 09. Однако десятичное число 10 кодировалось в шестнадцатеричном коде как 0A, а в двоично-десятичном коде как 10. Таким образом, двоично-десятичное число 10 ошибочно интерпретировалось как шестнадцатеричное, что соответствует десятичному числу 16.

Например, SMS протокол использует двоично-десятичное кодирование дат, так что некоторые программы на телефонах ошибочно в сообщениях указывали 2016-й год вместо 2010-го. Windows Mobile было первым программным обеспечением, пострадавшим от этой ошибки. В некоторых случаях WM6 меняла год любого входящего SMS сообщения, посланного после 1 января 2010 года, с 2010 на 2016.

Наиболее заметный сбой произошел в Германии, где более 20 миллионов банковских карт стали непригодными для использования, а также в Citibank Belgium, чьи идентификационные чипы клиентов перестали работать.

К другим затронутым системам относятся терминалы , и PlayStation 3 (кроме модели Slim). PlayStation 3 от Sony ошибочно считала 2010 год високосным, поэтому несуществующая дата 29 февраля 2010 года отображалась 1 марта 2010 года, что приводило к ошибке программы.

Год 2011

Тайвань официально использует календарь Миньго, по которому грегорианский 1912 год считается первым годом. Поэтому 2011 год по грегорианскому календарю будет 100-м годом по календарю Миньго, а это первый 3-значный год. Таким образом, год будет показываться как 1911-й год (нулевой год), если используется двухзначное представление.

Год 2013 Космический зонд Deep Impact потерял связь с Землёй 11 августа 2013 года, из-за проблемы с метками времени. Дата хранилась как беззнаковый 32-битный целочисленный счётчик десятых долей секунды с 1 января 2000 года.

Год 2019 Второе переполнение числа недель GPS В 2019 году произошло второе GPS переполнение числа недель. Компьютеризированные телескопы Meade с GPS, такие как LX200GPS, не могли больше определять своё местоположение, а потому не могли самостоятельно наводиться или находить звёздные объекты. Компания Meade выпустила прошивку версии 4.2k с исправлением, но она также внесла несколько новых ошибок. Версия 4.2l (буква L в нижнем регистре, не спутайте с заглавной I) была выпущена для исправления внесённых ошибок, но и эта версия содержала ещё больше необъяснимых изменений. Сторонняя разработка, StarPatch, бесплатно выпустила взломанную версию прошивки 4.2g для решения этих проблем.

Смена императора Японии

30 апреля 2019 года японский император Акихито в пользу своего старшего сына Нарухито. Поскольку годы в Японии традиционно обозначаются названиями эпох, соответствующих правлению каждого императора, это привело к появлению нового названия эпохи — — после восшествия Нарухито на престол на следующий день. Поскольку предыдущий император, Хирохито, скончался 7 января 1989 года, а правление Акихито в основном совпало с ростом использования компьютеров, большинство программ не было протестировано на корректное поведение при смене эпохи. Тестирование было дополнительно осложнено тем, что новое название эпохи было объявлено только 1 апреля 2019 года. Следовательно, ожидались ошибки в программах, которые не предусматривали новую эпоху.

Год 2020 Видеоигры WWE 2K20 и Star Wars Jedi: Fallen Order дали сбой 1 января 2020 года при переходе на следующий год. Обойти эти ошибки до выхода исправления можно было только сбросив год на 2019. перестали генерировать определенные отчеты начиная с 2020 года.

Парковочные автоматы в Нью-Йорке и других местах с 2020 года не могли принимать кредитные карты в качестве оплаты. Было найдено временное решение, но оно требовало индивидуального обновления каждого автомата. В Нью-Йорке ожидалось, что проблема с автоматами будет устранена только 9 января.

В Польше 5000 контрольно-кассовых машин перестали корректно печатать даты.

Спортивные смарт-часы Suunto показывали ошибку в вычислении дней недели, показывая дни, которые опережали фактические на два дня (например, FRI (пятница) вместо WED (среда), SAT (суббота) вместо THU (четверг)). Для модели Suunto Spartan ошибка была исправлена с выпуском прошивки версии 2.8.32.

Классическая Mac OS Панель управления в версиях Classic Mac OS 6, 7 и 8 позволяет установить дату только до 31 декабря 2019 года , хотя система способна продолжать отсчёт времени после этой даты.

Microsoft Schedule+ Программа Microsoft Schedule+ версия 1.0 (поставлялась с почтовым клиентом 3.0 ) отказывается работать с годами, большими 2020 года, поскольку программа была разработана для работы в пределах столетнего окна времени с 1920-го по 2019-й год. В результате, максимальная дата, которую можно установить — 31 декабря 2019 года. Microsoft заявляет, что это было сделано намеренно.

Год 2021 Пользователи телефонов Samsung сообщали, что телефоны с системами One UI 3.0 update или Android 11 с 2021 года теряли доступ к статистике батареи и зарядки. Затронутые устройства не отображали статистику использования, оставляя эти разделы пустыми.

В протоколе GPSD была обнаружена серьезная ошибка, которая могла бы привести к непредсказуемым последствиям. Речь идет о самопроизвольном переключении времени на март 2002 года, то есть время бы сдвинулось на 19 лет назад. Ошибка должна была проявиться 24 октября 2021 года. Это бы привело к очень серьезным проблемам в работе систем, которые задействуют службу GPSD. В частности, пользователи могли бы столкнуться с проблемами аутентификации, сбоями в механизмах проверки доступа и др.

К счастью, ошибка была своевременно обнаружена и устранена в выпуске GPSD 3.23. Пользователям, которые используют данный протокол в работе оборудования, было предложено срочно установить обновление и тем самым предотвратить сбой.

Год 2022