西西河

主题:【原创】微软啊微软 -- 淡紫若兰

共:💬12 🌺25 新:
全看分页树展 · 主题
家园 【原创】微软啊微软

今年,按照中国农历,有个闰月。

这个算新闻么?当然不算,中国农历和国际公历差一堆东西,这有什么奇怪的,公历么,无非是四年一闰年,四百年一个闰年,然后有点调整,基本上,还是很规整的啊。

兄弟们,姐妹们,雷得死安德尖头曼,有些东西大家还是要小心的啊。

微软的家伙们,其实不太仗义的,比如说,日期……

这样说的,大家肯定没有什么印象和想法,很自然。没有什么正常利用的东西么,不正常也不正常到那里去。

那么举个简单的例子,大家都用过Excel吧?

没用过?那……那就没用过吧……反正若兰要说的这个事情也不是有很大关系的。

用过Excel的,那若兰请大家注意一下:1900年2月29号这个日子。

您在Excel里输入正常日期,比如2009-06-10,这肯定没问题,Excel会自动把它作为系统输入日期。

您输入一个2009-13-01呢?excel就当成是字符串或者一类的东西处理了,这个很自然——您见过十三月么?

前面咱们说了:公历闰年的计算方法。按照这个计算方法,1900年的二月,那是不可能有29号的。

但是您输入一个1900-02-29看看?

excel会立刻认定:这是个正确日期,然后按照日期格式进行处理!

这个问题,若兰敢说,百分之九十九的人不会在乎,但我估计,也有一些人,冷汗会立刻淌出来吧。

这个问题,很早就有人提出来了,可是,咱们信任的ms,一直还是用这个计算方法的。

第一次发现这个问题,还是若兰在使用Python的时候,当时的经理在使用Plone/Zope的时候发现的。

倒数据,搬数据库,郁闷了:为什么日期会差2呢?如果日期差1,那也正常,有些系统把一月一号作为零,有些把一月一号当作一,差个一,那很正常。

可是问题在于,以起始日期算,差一,可是到了结算日期,也就是200x年,差的就是二了,这可是一天啊,差哪儿去了呢?

然后大家就查这个问题,方法很简单,折半查询,很快就查到了问题:

1900年2月29日这个不合理的日期,被微软认为是合理的。

微软,那可是一帮牛人啊。

这个问题……

第二天,当时若兰的经理姐姐同志很郁闷地告诉若兰:咱们昨天折腾了半下午的东西,我在文档里找到了一些说明,唉,早看到也不至于闹了这么长时间。

那,说明是怎么说的啊?若兰问。

就是说这个是微软历来的问题……

·#¥%……—

好在当时我们做的东西,连建国之前都不会涉及,这个日期更不会提到。

无伤大雅,但心惊胆战。

完。

全看分页树展 · 主题


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河