千年零一虫

类别:VC语言 点击:0 评论:0 推荐:

 

       前不久给某公司编写了一个统计软件,用的是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年就到期,所以由于匆忙也就没有进行测试,那位网友感兴趣,可以测试一下,结果告诉我!

本文地址:http://com.8s8s.com/it/it3492.htm