科技奇趣|为什么 Excel 认为 1900 年是闰年?
内容提要
这篇文章讨论了Excel中日期转换的问题。作者发现在读取Excel表格时,有些日期以数字形式显示,需要将其转换为日期格式。作者通过研究微软官方文档和其他论坛,发现Excel默认采用1900年作为起点,但错误地将1900年视为闰年。因此,作者提供了一个修正方案来将数字转换为日期。文章最后指出,尽管这个程序不完美,但在实际使用中并不会影响。
延伸解读
Excel 1900 闰年错误的历史根源
Excel 将 1900 年误判为闰年,并非偶然失误,而是为了兼容早期电子表格软件 Lotus 1-2-3 而保留的缺陷。Lotus 1-2-3 的时间系统错误地包含了 1900 年 2 月 29 日,Excel 在模仿其文件格式时也沿用了这一错误。尽管现代 Excel 已无需兼容 Lotus,但出于历史数据一致性的考虑,微软选择不修复此问题,使其成为一项长期存在的“特性”。
日期序列号转换的实用修正
当从 Excel 读取日期时,若得到数字序列号(如 45323),直接以 1900-01-01 为起点计算会偏差一天。正确的转换方法是以 1899-12-30 为起点,加上序列号天数。例如,45323 对应 2024-02-01。这一修正适用于序列号大于 60 的情况,因为 Excel 中不存在的 1900-02-29 占用了序列号 60,导致后续日期偏移。
小缺陷的实际影响与应对
对于序列号小于等于 60 的日期,修正后的转换结果会与 Excel 显示不一致,因为 Excel 包含了虚构的 1900-02-29。但这类日期在实际业务中极少出现,通常无需处理。因此,采用 1899-12-30 起点的转换方案在绝大多数场景下足够可靠,不会影响绩效核对等日常数据处理任务。
Q&A
Excel为什么将1900年视为闰年?
Excel错误地认为1900年是闰年,源于模仿早期竞品Lotus 1-2-3的缺陷。
如何将Excel中的数字转换为日期?
可以使用修正后的函数,将起点设置为1899年12月30日来转换数字为日期。
Excel的日期系统有哪些?
Excel支持1900日期系统和1904日期系统,Windows版本默认使用1900系统。
Excel中日期显示为数字的原因是什么?
日期在Excel中以数字形式显示是因为Excel将日期转换为自1900年1月1日以来的天数。
Excel的日期转换程序存在哪些局限性?
该程序在计算60以内的数字时,结果与Excel显示的日期不一致。
如何修正Excel日期转换中的错误?
通过将起点修正为1899年12月30日,可以正确转换数字为日期。