科技奇趣|为什么 Excel 认为 1900 年是闰年?

💡 原文中文,约2800字,阅读约需7分钟。
📝

内容提要

这篇文章讨论了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日,可以正确转换数字为日期。

🏷️

标签

➡️

继续阅读