西西河

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

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

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

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

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

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

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

那么举个简单的例子,大家都用过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日这个不合理的日期,被微软认为是合理的。

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

这个问题……

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

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

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

·#¥%……—

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

无伤大雅,但心惊胆战。

完。

家园 类似千年虫问题啊

花。

家园 性质还是不同的

谢谢花~~~

家园 这个问题我倒是可以解释一下

Joel on software里面有一篇文章专门讲Bill老大亲自Review的故事。1900年是闰年吗?其实不是的。Joel“发现可被100整除的年份不一定是闰年,除非它能被400整除。”

外链出处,这可是我自己辛辛苦苦翻译的。

家园 真没注意这个问题。

系统核心部分的bug吧,呵呵,智者千虑,必有一失啊。

家园 真不好意思

恭喜:你意外获得【通宝】一枚

鲜花已经成功送出。

此次送花为【有效送花赞扬,涨乐善、声望】

家园 顺便请教一下如何关闭excel那自作聪明的自动转日期功能

有时候输入一个字符串,如3-8,他会自作聪明地给你改成8月3日。

如果我从外部读入一个文本文件,里面有像日期的字符串就都自作聪明地改成了日期,改不成的就不变,一片混乱啊。

另外,建议你出营之后,就多到信息技术版发帖子,你身上肯定有不少好东西可写的。

现在你也可以在新兵营发贴时要求预订至信息技术。

家园 把cell format 改成text
家园 这个我试过,但不能一劳永逸地关闭它自作聪明。
家园 那你可能要改default template,我没试过
家园 Excel就是有些小问题

我记得还有个什么统计学函数的参数设置和书本上的不一样,虽然差的不大,对最后的计算结果影响可以忽略。

教授说她给微软去信想问个所以然,结果按照微软的传统当然是石沉大海……

家园 谢谢瓦斯兄

最近会写一些若兰经历的旧闻,以后会逐渐向技术版面转战

全看树展主题 · 分页首页 上页
/ 1
下页 末页


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

Copyright © cchere 西西河