Pergunta
Há uma série de relatórios de sistemas de não compreender o ano de 2010 mas não tenho idéia do porquê. Os sistemas atuais que cuidam estão funcionando bem, tanto quanto eu poderia dizer, mas eu gostaria de saber qual é o problema real é a busca melhor.
Alguém poderia lançar alguma luz sobre isso, por favor?
Edit: http://www.rte.ie/business/2010 /0105/bug.html - Informações sobre isso afeta cartões de crédito na Alemanha
Solução
Vários protocolos utilizados na banca e telecomunicações - incluindo o protocolo SMS - codificar o ano como BCD em um único byte.
De 2000-2009 um poderia facilmente cometer o erro de interpretar o ano como um número binário padrão desde a codificação seria a mesma:
Encoding Binary-interpreted BCD-interpreted
0x01 2001 2001
0x02 2002 2002
...
0x09 2009 2009
0x10 2016 2010
...
Esta é provavelmente a causa do bug do Windows Mobile.
Outras dicas
Uma possível explicação é no artigo abaixo
http://www.theregister.co.uk/2010/ 05/01 / symantec_y2k10_bug /
Lembra-me do seu recente artigo sobre barato e sujos correções Y2K bug onde alguns programadores inescrupulosos colocar de forma simples, se <10 = 20xx caso contrário, a data é 19xx
SpamAssassin tinha uma regra para datas marca muito longe no futuro como spam:
/20[1-9][0-9]/
A correção veio alguns dias atrasado, mas é bastante simples:
/20[2-9][0-9]/
Vê-lo novamente em dez anos.
Eu tenho um sistema de trabalho que usa um campo ano um dígito. Sim. Um dígito. Assim, a razão pela qual este sistema está falhando é que "2000" é expresso o mesmo que "2010".
O que eu ouvi falar foi rápido correções de pessoas fizeram para Y2K sem pensar. Então, se xx <10, então 20xx 19xx outra pessoa.
Pode ser devido aos jovens desenvolvedores que começaram suas carreiras após Y2K e estão usando 1 dígito para representar o ano.
Eu cuidei de um pouco de 2010 falhar em um site na semana passada, foi apenas o resultado de um descuido na codificação embora.
Alguém pensou que seria uma boa idéia para definir o valor de um item da lista para o dateTime.year.Now atual () quando a lista continha apenas itens até 2009.
ddlItem.findByText(DateTime.Now.Year.ToString())
Aqui está uma captura de tela do Norton Protection endpoint Symantec
alt texto http://img695.imageshack.us/img695/4500/152010112800am .jpg
realmente agradável que ninguém @ Symantec informaram os seus clientes ... Até que o artigo foi publicado: http://www.theregister.co.uk / 2010/01/05 / symantec_y2k10_bug /
É que há um bug em um componente que divide o ano em duas partes. A segunda parte é usada em uma comparação de modo a que o dígito 10 não está na base 10, que é na base 16 significado que é 0x10 = 16 (hex).
Eu usei o Google Code Search para encontrar y2010 bugs no software open source . Olhei para um determinado padrão que indicasse um bug (uso de "200% d", como uma seqüência de formato printf), e encontrou vários projetos com esse erro. aplicação criativa de padrões de pesquisa provavelmente poderia transformar-se mais diferentes tipos de bugs.