千年零一虫 (转)[@more@]
过了一个月之后, 用户反映:在按日起统计功能中发现每个月12日之前的数据没有被统计出来。感到很奇怪。拿回来调试,一切正常,并不像他们所说的每个月12日之前的数据没有统计。于是到实地考察。果真由此问题,可是将其完整拿到我这里的 系统中仍然是正常的。*?* 于是分析我们之间的系统有和不同。我们用的是 win2000,用户用的是 win98。于是找到一台98,发现故障。可是仔细看 程序,没有什么地方写错,而且在2000下可以正常工作。于是仔细分析了数据库,发现在98中Access97数据库中的日期型数据使用yy/mm/dd的形式,可是按照 微软的解释,年份在45年以前被认定为20XX年,不应有任何问题啊?可是拿到数据库操作窗口当中,发现年份被修改了。比如2001-4-12, 存储形式为01/04/12,可是被系统改为12/04/01,这样程序读出的时间是2012-4-1。可是01/04/13系统却认为是2001-4-13,这是正确的。在windows2000下去没有这样的问题,所以出现了上述的情况。
如何解决呢?经过多次试验,将手工输入的年份用Format 函数改写成dd/mm/yy格式就可以解决这一问题。原因很奇怪,Windows98对每个于13日之后的日期可以用两种方式表达。即yy/mm/dd和dd/mm/yy这两种格式都可以被正确识别,每个月12日之前的日期只能是dd/mm/yy格式。可使用这种方式写出来的程序去不能在Windows2000中文版下正常运行(E文的没试过)。所以要想能够兼容2000必须判断 操作系统类型,然后用不同的格式。这个老盖把win98的千年虫杀死了,可是他去没有杀死千年零一虫。不知还有没有千年另一十虫,由于那个软件2010年就到期,所以由于匆忙也就没有进行测试,那位网友感兴趣,可以测试一下,结果告诉我!
前不久给某公司编写了一个统计 软件,用的是 vb6.0+Access97 数据库,在 windows2000下 调试,所有功能正常,并无明显 bug。于是发行。。。。。。
过了一个月之后, 用户反映:在按日起统计功能中发现每个月12日之前的数据没有被统计出来。感到很奇怪。拿回来调试,一切正常,并不像他们所说的每个月12日之前的数据没有统计。于是到实地考察。果真由此问题,可是将其完整拿到我这里的 系统中仍然是正常的。*?* 于是分析我们之间的系统有和不同。我们用的是 win2000,用户用的是 win98。于是找到一台98,发现故障。可是仔细看 程序,没有什么地方写错,而且在2000下可以正常工作。于是仔细分析了数据库,发现在98中Access97数据库中的日期型数据使用yy/mm/dd的形式,可是按照 微软的解释,年份在45年以前被认定为20XX年,不应有任何问题啊?可是拿到数据库操作窗口当中,发现年份被修改了。比如2001-4-12, 存储形式为01/04/12,可是被系统改为12/04/01,这样程序读出的时间是2012-4-1。可是01/04/13系统却认为是2001-4-13,这是正确的。在windows2000下去没有这样的问题,所以出现了上述的情况。
如何解决呢?经过多次试验,将手工输入的年份用Format 函数改写成dd/mm/yy格式就可以解决这一问题。原因很奇怪,Windows98对每个于13日之后的日期可以用两种方式表达。即yy/mm/dd和dd/mm/yy这两种格式都可以被正确识别,每个月12日之前的日期只能是dd/mm/yy格式。可使用这种方式写出来的程序去不能在Windows2000中文版下正常运行(E文的没试过)。所以要想能够兼容2000必须判断 操作系统类型,然后用不同的格式。这个老盖把win98的千年虫杀死了,可是他去没有杀死千年零一虫。不知还有没有千年另一十虫,由于那个软件2010年就到期,所以由于匆忙也就没有进行测试,那位网友感兴趣,可以测试一下,结果告诉我!
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-989790/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10752043/viewspace-989790/
作者开发的一个统计软件在Windows 98环境下出现日期统计错误的问题,最终发现是由于操作系统对日期格式解析的不同导致。通过判断操作系统类型并采用相应日期格式解决了问题。
2876

被折叠的 条评论
为什么被折叠?



