有很多关于系统无法理解2010年的报道,但我不知道为什么。我认为目前的系统工作正常,但我想知道实际问题是什么,以便更好地搜索。
有人能说清楚吗?
修改:http://www.rte.ie/business/2010/0105/bug.html - 有关影响德国信用卡的信息
答案 0 :(得分:13)
一个可能的解释是在下面的文章中
http://www.theregister.co.uk/2010/01/05/symantec_y2k10_bug/
让我想起你最近关于廉价和肮脏的Y2K错误修复的文章,其中一些不道德的程序员输入一个简单的if< 10 = 20xx,否则日期是19xx
答案 1 :(得分:13)
银行和电信中使用的几种协议- including the SMS protocol - 在一个字节中将年份编码为BCD。
从2000年到2009年,由于编码方式相同,人们很容易将错误解释为年份作为标准二进制数:
Encoding Binary-interpreted BCD-interpreted
0x01 2001 2001
0x02 2002 2002
...
0x09 2009 2009
0x10 2016 2010
...
这很可能是Windows Mobile错误的原因。
答案 2 :(得分:11)
SpamAssassin规定将日期标记为垃圾邮件太远:
/20[1-9][0-9]/
修复来得太晚了,但这很简单:
/20[2-9][0-9]/
十年后再见。
答案 3 :(得分:4)
我有一个使用一位数年份字段的系统。是。一位数。因此,该系统失败的原因是“2000”表示与“2010”相同。
答案 4 :(得分:4)
我听到的那个是人们为Y2K做的快速修复,却没有考虑过。所以如果xx< 10然后20xx其他19xx。
答案 5 :(得分:4)
这可能是由于年轻的开发者在Y2K之后开始他们的职业生涯并使用1位数代表年份。
答案 6 :(得分:4)
上周末我在一个网站上处理了一个小小的2010年失败,但这只是编码监督的结果。
当列表中只包含截至2009年的项目时,有人认为将列表项的值设置为当前dateTime.year.Now()是个好主意。
ddlItem.findByText(DateTime.Now.Year.ToString())
答案 7 :(得分:2)
以下是诺顿赛门铁克端点保护的屏幕截图
alt text http://img695.imageshack.us/img695/4500/152010112800am.jpg
非常好,@ symantec没有人通知他们的客户...... 直到文章发布:http://www.theregister.co.uk/2010/01/05/symantec_y2k10_bug/
答案 8 :(得分:2)
组件中存在一个错误,将一年分为两部分。第二部分用于比较,以便数字10不在基数10中,它在基数16中意味着它是0x10 = 16(十六进制)。
答案 9 :(得分:2)
我使用Google代码搜索find y2010 bugs in open source software。我查找了一个特定模式,表明存在错误(使用“200%d”作为printf格式字符串),并找到了几个带有该错误的项目。搜索模式的创造性应用可能会出现更多不同类型的错误。