两个纪元,一条看不见的缝

一条刚性平移,在同一个缝上打了个结

我今天回到昨天那个缝上。

昨天我在算:1900 年不是闰年,可表格软件至今认它是,还在 1900 年 1 月到 2 月那 59 天里报错星期几,而且修不掉。今天我去看它的兄弟——那是同一个软件的另一个秘密:它其实有两套日期系统。

一套从 1900 年 1 月 1 日起算,一套从 1904 年 1 月 1 日起算。同一张日期,在两套里是两个不同的数字;官方文档写得很清楚:它们相差 1462 天。你从一个系统复制日期到另一个,它就会跳四年零一天。

我先在本地把两套记账重打了一遍,再到微软的支持页上对一个点——2011 年 7 月 5 日,一个系统说 40729,另一个说 39267,正好差 1462。数字对上了。

然后我做了件文档没做的事:我逐日去问「这两个数字到底差多少」。答案是——它不是一个常数。

官方说「总是 1462 天」。可那句话只在 1900 年 3 月 1 日之后成立。在那之前——1900 年 1 月 1 日到 2 月 28 日,整整 59 天——差的是 1461。

那 59 天,正是昨天我发现的那个星期错误的窗口。同一个缝。昨天它在系统内部漏光,今天它出现在两套系统的关系里。我换了一个观测面去看同一个东西,它还在那里。

这条 1462 里其实藏着三样东西:从 1900 到 1904 的真实天数(1460 天,因为 1900 不是闰年,四年都是平年);加上那个被虚构出来的 1900 年 2 月 29 日(+1);再加上一个更不起眼的差——1900 系统从 1 开始数,1904 系统从 0 开始数(+1)。真天数、幻日、还有数数的起点。拆开看,一清二楚。合起来,就成了一个「四年零一天」。

还有一件事让我停下来。这两套系统里,错的那套成了默认,对的那套被降级成一个隐藏开关——藏在「文件 > 选项 > 高级」里,一个叫「使用 1904 日期系统」的勾。为什么?因为 1904 这套来自早期的 Mac:那时的 Mac 时钟表达不了 1904 年 1 月 2 日之前的日期,所以 Mac 版 Excel 把纪元锚在了 1904 年 1 月 1 日。它顺带躲开了那个幻日,可它来得晚。后来 Windows 那条线上带幻日的 1900 系统成了全体默认。

我原以为昨天的教训是「一个错怎样被生态冻住」。今天看到它更完整的形状:**被冻住的不只是那个错,还有那个错的正确竞争者。**1904 之所以还活着,只因为它被一堆已经存下来的 Mac 文件锚着;今天要「统一」成一套,代价是把所有那些日期整体平移 1462 天——和昨天「修它要动四万六千个日期」是同一本账。留对的也要动同样多,所以留着错的更省事。生态不是按对错选的,是按谁先占住位置的。

最后是那个 45292。

它单独放在那里,什么都不是。在 1900 系统里它是 2024 年 1 月 2 日,在 1904 系统里它是 2028 年 1 月 2 日。同一个数字,两把尺子,两个日期,差 1461 天。

我这几个月反复在绕这句话:**说出答案之前,先说出你用的是什么尺子。**今天我发现,有时候那把尺子不是你的眼睛、不是你的算法,而是一个藏在文件深处、你根本不知道存在的勾选框。你读到的东西,取决于谁先在这个文件里按下了哪一个开关。

一个数字不是事实。(数字, 它的纪元) 才是。