前两天看见 科普中国 公众号发布的一篇文章,大受震撼,长见识了!原来,历史上“消失了”一些日期。哈哈,和朋友 zhuangbility 的时候到了:为什么历史上会有消失的日期,这到底是自然选择还是集体被 “月读”;究竟是人性的扭曲,还是道德的沦丧。😄😄
时间和空间并不存在,这只是人们的一个幻觉。
阿尔伯特·爱因斯坦
以下是历史上“消失的”日期:
国家 | “消失”的日期区间 | “消失”天数 |
---|---|---|
意大利、波兰、西班牙、葡萄牙 | 1582.10.5 - 1582.10.14 | 10 |
法国 | 1582.12.10 - 1582.12.19 | 10 |
比利时 | 1583.1.2 - 1583.1.11 | 10 |
丹麦、挪威、德国部分 | 1700.2.19 - 1700.2.28 | 10 |
英格兰、苏格兰、美国部分 | 1752.9.3 - 1752.9.13 | 11 |
瑞典 | 1753.2.18 - 1753.2.28 | 11 |
阿拉斯加 | 1867.10.6 - 1867.10.17 | 12 |
俄罗斯 | 1918.2.1 - 1918.2.13 | 13 |
希腊 | 1923.2.16 - 1923.2.28 | 13 |
一句话概括:以前不同历法周期不一致,后来逐渐大一统了,从旧历法切换到新历法的时候,就需要强制把旧历法的日期改成新历法的日期,中间可能会删除掉某些日子。比如,意大利、波兰、西班牙、葡萄牙国家从儒略历切换到格里历的时候,就删除了 1582/10/5
到 1582/10/14
共十天的日期。
学过编程算法的肯定都写过这样的代码:给定一个年份,判定其是否为闰年。
其实这便是现在通用的格里历的规则:
- 年份能够被 4 整除则为闰年;
- 特别的,世纪年(年份为整百数)必须要被 400 整除才设为闰年,否则设为平年。
即每 400 年当中只有 97 个闰年,平均每年 (365×303+366×97)/400=365.2425
日。
而在此之前的儒略历仅有第一点规则,平均每年 (365×3+366)/4=365.25
日。这就导致,儒略历对应的日期相比格里历是滞后的(每 133 年差一天)。所以,在历法从儒略历切换到格里历时,就要把滞后的日子直接从日历中删除。(就是这么简单粗暴)
如果你有心,翻看某些日历 APP,就会发现,它们会直接删除这些日期,比如:
拓展一
历法一般分三种,阳历(以地球绕太阳公转纪年)、阴历(以月相阴晴圆缺纪月,一年十二个月)、阴阳历(前两者结合,即以月相阴晴圆缺纪月为基础,通过设置闰月来纪年)。所以,我们的农历属于阴阳历。
拓展二
为了调节日期,我们有了闰月;但是其实为了调节每一天当中的时间,我们还有闰秒机制。过去几十年,地球自转在变慢,所以,为了等待赶不上趟的地球自转,自 1972 年开始,我们人为增加了 1 秒。具体的操作就是在某一天(通常是 6/30 或 12/31)的 23:59:59
之后,增加 23:59:60
,再到第二天的 00:00:00
,或者在 23:59:58
之后,跳过 23:59:59
直接到第二天的 00:00:00
。
迄今为止,我们总共增加了 27 次闰秒,但是还没有发生减少闰秒的情况:
实施年份 | 6月30日 23:59:60 | 12月31日 23:59:60 |
---|---|---|
1972年 | +1秒 | +1秒 |
1973年 | —— | +1秒 |
1974年 | —— | +1秒 |
1975年 | —— | +1秒 |
1976年 | —— | +1秒 |
1977年 | —— | +1秒 |
1978年 | —— | +1秒 |
1979年 | —— | +1秒 |
1981年 | +1秒 | —— |
1982年 | +1秒 | —— |
1983年 | +1秒 | —— |
1985年 | +1秒 | —— |
1987年 | —— | +1秒 |
1989年 | —— | +1秒 |
1990年 | —— | +1秒 |
1992年 | +1秒 | —— |
1993年 | +1秒 | —— |
1994年 | +1秒 | —— |
1995年 | —— | +1秒 |
1997年 | +1秒 | —— |
1998年 | —— | +1秒 |
2005年 | —— | +1秒 |
2008年 | —— | +1秒 |
2012年 | +1秒 | —— |
2015年 | +1秒 | —— |
2016年 | —— | +1秒 |
这个操作,对普通人基本没有影响,但是对很多科学计算或精密工程的影响则十分巨大。这也会给软件系统带来 bug(具体可自行去网上搜寻,个中苦楚,恐怕只有行业中的人士才能懂 😭)。所以,现在有些人建议不要搞闰秒了,直接搞闰时好了,这样不用隔几年就要闰一次,方便你我他。
拓展三
其实,在编程领域,另一个和时间打交道时经常遇到的问题便是时区。虽然初中便学过,但这里面的水,简直不要太深。有兴趣的小伙伴,请戳 这里,我就不赘述了。
这里仅记录经常被问的问题和我总结的答案:
- 总共有多少个时区?
目前在使用的有 38 个(排除那些小众的,不被大多数人认可的时区,参考的是 这里。下同) - 印度是东 4.5 区?
是的,严格来说是 UTC +4:30 区,其他奇怪的时区还有 UTC -9:30、UTC -3:30、UTC +3:30、UTC +5:30、UTC +5:45、UTC +6:30、UTC +8:45、UTC +9:30、UTC +10:30、UTC +13、UTC +13:45、UTC +14 - 最早时间和最晚时间相差多久?
最早是UTC +14
时间,最晚是UTC -12
时间,所以前后相差 26 小时
拓展四
为了节约能源(减少碳排放),部分国家还设置了冬令时和夏令时。我们国家在上个世纪曾效仿苏联,短暂实施过几次夏令时(1986 年至 1991 年),后来取消了。
愚蠢的人类!
威震天
拓展五
以上这些紊乱的时间问题,导致我们在代码的世界中经常遇到莫名其妙的问题(bug issue / feature 😂)。且这些问题,在不同的环境(context)下可能表现得还不太一样。
比如,消失的天数,在 Go
、C#
和 js
等编程语言中均体现不出来:
但是,夏令时却:
参考链接
- 历史上”消失”的日期:我消失了,但仿佛又没消失…
- 热搜第一!地球自转加速,一天不足24小时!网友最想知道的果然是它
- 计算机时间到底是怎么来的?程序员必看的时间知识!
- Leap Seconds FAQs
- 一文看懂世界各国的夏令时冬令时
本文链接:
content_copy https://zxs66.github.io/2021/11/20/missing-days/