Подтвердить что ты не робот

Что вызывает ошибки 2010 года?

Есть много сообщений о том, что системы не понимают 2010 год, но я не знаю, почему. Существующие системы, за которыми я смотрю, отлично работают, насколько я могу судить, но я хотел бы знать, какова реальная проблема в поиске лучше.

Может ли кто-нибудь пролить свет на него, пожалуйста?

Изменить: http://www.rte.ie/business/2010/0105/bug.html - Информация об этом влияет на кредитные карты в Германии

4b9b3361

Ответ 1

Несколько протоколов, используемых в банковской и телекоммуникационной сферах - включая протокол SMS - кодируют год как BCD в одном байте.

С 2000-2009 года можно легко ошибиться в интерпретации года как стандартного двоичного числа, так как кодирование будет одинаковым:

Encoding  Binary-interpreted  BCD-interpreted
0x01      2001                2001
0x02      2002                2002
...
0x09      2009                2009
0x10      2016                2010
...

Скорее всего, это причина ошибки Windows Mobile.

Ответ 2

Одно из возможных объяснений приведено в статье ниже

http://www.theregister.co.uk/2010/01/05/symantec_y2k10_bug/

Напоминает мне о вашей недавней статье о дешевых и грязных исправлениях ошибок в Y2K, где некоторые недобросовестные программисты ставят простой, если < 10 = 20xx иначе дата равна 19xx

Ответ 3

В SpamAssassin было правило, чтобы отмечать даты в будущем как спам:

/20[1-9][0-9]/

Исправление произошло через несколько дней, но это довольно просто:

/20[2-9][0-9]/

Увидимся через десять лет.

Ответ 4

У меня есть система на работе, которая использует однозначное поле года. Да. Одна цифра. Поэтому причина, по которой эта система терпит неудачу, заключается в том, что "2000" выражается так же, как "2010".

Ответ 5

Тот, о котором я слышал, был быстрым исправлением, которое люди делали для Y2K, не думая об этом. Поэтому, если xx < 10 затем 20xx еще 19xx.

Ответ 6

Возможно, это связано с тем, что молодые разработчики начали свою карьеру после Y2K и используют 1 цифру для представления года.

Ответ 7

В прошлый уик-энд я позаботился о небольшом провале 2010 года на сайте, но это был результат недосмотра в кодировании.

Кто-то подумал, что было бы неплохо установить значение элемента списка текущей dateTime.year.Now(), когда список содержит только элементы до 2009 года.

ddlItem.findByText(DateTime.Now.Year.ToString())

Ответ 9

Это то, что в компоненте есть ошибка, которая разбивает год на две части. Вторая часть используется для сравнения, так что цифра 10 не находится в основании 10, а в основании 16 означает, что она равна 0x10 = 16 (hex).

Ответ 10

Я использовал Google Code Search для найти ошибки y2010 в ПО с открытым исходным кодом. Я искал один конкретный шаблон, который указывал бы на ошибку (использование "200% d" в качестве строки формата printf) и нашел несколько проектов с этой ошибкой. Творческое применение шаблонов поиска, вероятно, может привести к появлению более разных типов ошибок.