微软当时不得不这么设计,因为excel需要导入Lotus 1-2-3 的工作表,而这个日期BUG就是Lotus里的bug。而Lotus 很有可能是故意设计的。因为Lotus占用的内存不能大于640KB。这是很有限的空间。如果忽略1900年,那么就可以根据左边的两个数字是否为0,判断任意一年是否为闰年。那就简单多了。Lotus的那些家伙可能觉得,过去的所有时间中只有这两个月受到影响,不是很重要的事。(excel的纪元是1900年1月1日)
--Joel Spolsky(2006-06-16)
(1904日期系统是微软公司为了解决1900年闰年问题设计的另一个日期系统。它支持的日期纪元是1904年1月1日)
这个问题我中微博上问过Microsoft,得到权威的回答是:
Excel的是错误的,早期为了兼容Lotus,保留了1900-2-29这个不存在的日期。所以,Excel还有一个选项是1904日期系统。