时间和历法

一些没弄明白的问题。

现在是几点

来自原子钟的时间是国际原子时 TAI,它代表了秒的定义最准确的实现。各独立地方的原子时 TA (k) 定期传送给法国巴黎的国际权度局 BIPM。

来自天文观测的时间是世界时 UT,它代表了地球实际自转的节律,现在使用的是 UT1。由于地球的自转速度不是固定的,长期看来有减慢的趋势,所以 UT1 的秒长和 TAI 不一样。

来自 NTP 服务器和卫星信号的时间是协调世界时 UTC,是我们在手机电脑上看到的时间。东八区的北京时间是 UTC 加上 8 个小时,是

UTC 的秒长遵循 TAI,节律遵循 UT1。当 UT1 与 UTC 的时间差接近 0.9 秒时,会向 UTC 里插入一个闰秒,以确保 UTC 与 UT1 之间的时间差不超过 0.9 秒。闰秒的时刻类似 23:59:60,会引起部分软件出 BUG。所以在 2022 年 11 月的第 27 届国际计量大会上,科学家和政府代表投票决定到 2035 年取消闰秒。中国科学院国家授时中心每月的《时间频率公报》里有 TAI、UT1 与 UTC 的差值,和下一次的闰秒预告。

UNIX 时间是从 UTC 1970 年 1 月 1 日 0 时 0 分 0 秒起至现在的总秒数,不包括闰秒。对于记录 UNIX 时间的 32 位有符号整数变量来说,它的最大值是 2^31-1,从上述时间向后推这些秒后,是 2038 年 1 月 19 日 3 时 14 分 07 秒。在下一秒,用于保存时间的变量会变成 -2^31,时间会变成 1901 年 12 月 13 日,这被称为 2038 年问题。如果用 32 位无符号整数表示 UNIX 时间,问题会延后到 2106 年。如果用 64 位有符号整数会延后到 2922 亿年后。

一天有多长时间

恒星日是以遥远的恒星为参照物,地球自转 360 度的时间,约为 23 小时 56 分钟 4 秒。恒星日的长度不是固定的,因为地球的自转速度不是固定的,自转轴也不是固定的。地球表面和内部的物质运动造成自转轴和极点在地球表面移动,称极移。

真太阳日是 UT1 的参照,UT1 对 UT0 做了极移的修正,是一个正午到下一个正午太阳连续两次过上中天的时间,是地球自转约 360 度 59 分的时间。因为地球除了自转,还会绕太阳公转,在自转一周之后地球已经不在原来的公转位置上了,还需要额外转约 59 分才能使原来的点对准太阳。

平太阳日是 UTC 的参照,是真太阳日的平均,长度是固定的 24 小时,是我们现在所说的一天。

一年有多长时间

恒星年是以遥远的恒星为参照物,地球的轨道周期,地球绕太阳公转 360 度的时间,约 365.2564 平太阳日。

回归年是以地球为参照物,太阳连续两次过春分点的时间。春分点是天赤道和黄道的交点,黄道是太阳绕地球转的轨道,如果把地球看作是静止在一个位置上的,且在不观测其他天体的情况下,太阳就是绕着地球转的。

回归年的长度不是固定的,因为地球的自转轴不是固定的。太阳、月球及其他行星作用在地球赤道隆起部分的引力矩引起地轴进动。进动就是一个快倒下的陀螺,它的转轴会在一个圆锥面上旋转。在地轴进动的同时,其他细微的抖动称章动。地轴进动和章动引起岁差,即春分点的变化。

在黄道上的点取平均值的年称为平回归年,当前的平回归年约 365.2422 平太阳日。而现行公历的平年是 365 天,大约每四年就会有一天的误差:

  • 0.2422 * 4 = 0.9688
  • 0.2422 * 100 = 24.22
  • 0.2422 * 400 = 96.88

所以现行公历每四年闰一天,每 100 年闰 24 天,每 400 年闰 97 天,闰的一天加到二月里。准确地说,年份能被 400 整除的是闰年,能被 4 整除且不能被 100 整除的也是闰年,剩下的是平年。

儒略历和格里历

公元前 46 年,罗马共和国的儒略・凯萨采纳埃及数学家兼天文学家索西琴尼的计算提出了儒略历,是简单的四年闰一次。儒略历从公元前 45 年 1 月 1 日开始实施,这是第一次修 BUG。

这一改革原本可以顺利实施,但祭司们执行错了,即他们每三年而不是每四年就增加一个闰日。这个错误持续了 36 年,在此期间多插入了 3 个不必要的闰日。直到这个错误被发现后,奥古斯都下令在接下来的十二年中不再增加任何闰日,以此来纠正之前因祭司多加的 3 天,这是第二次修 BUG。

直到公元 4 年以后,儒略历才按照恺撒的意图运行,所以下一个闰年是公元 8 年,此后每隔四年就有一个闰年。平均一年 365.25 天,仍然与平回归年的天数有差异。

误差累积到了 1582 年,复活节的日期与春分相差甚远,罗马教皇格里高利十三世将儒略历改为意大利医生兼哲学家阿洛伊修斯的历法,把日历年的平均长度从 365.25 天减少到 365.2425 天,即现行的闰年方式。规定 1582 年 10 月 4 日的后一天是 10 月 15 日,以弥补误差,这是第三次修 BUG。即现行的格里历、公历。

所以,更准确地说是:

  • 在 1583 年及以后的格里历里,年份能被 400 整除的是闰年,能被 4 整除且不能被 100 整除的也是闰年,剩下的是平年。闰年有 366 天,平年有 365 天。
  • 在格里历里,1582 年有 355 天;在儒略历里,1582 年有 365 天。
  • 在 4 年至 1581 年的儒略历里,能被 4 整除的必定是闰年 366 天,剩下的都是平年 365 天。
  • 在前 45 年至 3 年的儒略历里,挺混乱的,参考 Julian calendar
  • 在儒略历实施的前一年(公元前 46 年),罗马当年里有 445 天。
  • 在前 47 年及之前的罗马历法里,平年有 355 天,闰年有 377 或 378 天。

公元纪年和世纪

公历(格里历)和公元纪年的意思不一样,前者是历法,后者是年号。公元纪年最初是基于儒略历的,6 世纪的时候,东罗马帝国的僧侣狄奥尼修斯把耶稣基督诞生的那一年作为公元 1 年(Anno Domini 1,即主的年份 1 年),在此之前的为公元前(Before Christ)。

世纪是基于公元纪年体系来划分的时间单位,一个世纪有 100 年。

  • 没有公元 0 年。
  • 1 世纪的第一天是 1 年 1 月 1 日。它的前一天是前 1 世纪的最后一天,是前 1 年 12 月 31 日。
  • 公元前 5 世纪是前 500 年的第一天到前 401 年的最后一天。
  • 20 世纪是 1901 年 1 月 1 日到 2000 年 12 月 31 日。

一个月有多长时间

恒星月是以遥远的恒星为参照物,月球的轨道周期,月球绕地球公转 360 度的时间,约 27.32166 天。地球和月球的质心在距离地心约 4671 公里,即地球赤道半径约 0.73 倍的地球内部,两者各自围绕着质心运转。

回归月是月球连续两次通过天空同一点的平均时间,约 27.32158 天。由于月亮是不会发光的,它反射的是太阳的光,所以我们不像用回归年一样用它编历法。

朔望月是在地球上看到的月亮的一个完整的阴晴圆缺周期,平均 29.5306 天。朔为新月,望为满月。在月球绕地球公转的同时,地球也在围绕太阳公转。当月球完成一次公转回到相同位置时,地球已经沿着其公转轨道前进了一段距离,月球需要额外的时间才能再次与太阳对齐形成新月或满月,所以朔望月比回归月长。

当月球相对于地球离阳光更近时,在地球上看到的是新月:

当地球相对于月球离阳光更近时,在地球上看到的是满月:

图片来自 Earth Space Lab

农历

以回归年为基础制定的历法叫阳历,如儒略历和格里历;以朔望月为基础制定的历法叫阴历,如伊斯兰历。

我国现行的农历是阴阳合历,月长遵循朔望月,通过闰月来确保与回归年的天数相差不大。

农历是怎么制定的:根据 GB/T 33661-2017 农历的编算和颁行,它的基础是月球和太阳的地心视黄经,参考的是国际地球自转和参考系服务规范(IERS Conventions)的模型。

  • 一天的范围是北京时间 0 时到 24 时;
  • 二十四节气为一个回归年里,包含太阳地心视黄经为 \(15k\) 度的时刻的一天,\(k \in [0,23] \cap \mathbb{Z}\),其中春分为 0 度。
  • 中气是二十四节气中从冬至开始,逢奇序数的节气。即冬至,大雪,……,春分,谷雨,……
  • 包含月球和太阳的地心视黄经相等时刻的一天为朔日,为农历月的第一天;
  • 包含冬至在内的农历月为农历十一月;
  • 农历十一月向后数(不包括闰月)的第二个月为农历年的第一个月,即正月;
  • 若从某个农历十一月到下个农历十一月(左闭右开)之间有 13 个农历月,则需要置闰。置闰规则为:取其中最先出现的一个不包含中气的农历月为农历闰月。

为什么农历平均十九年七闰:

  • 朔望月平均 29.5306 天,两个朔日可能相差 30 天或 29 天,即大小月的区别。
  • 回归年平均 365.2422 天。一个回归年里一定有 24 个节气。
  • 两者相除,一个回归年平均有 12.368 个朔望月。
  • 0.368 * 19 = 6.992

生辰八字

生辰八字是出生的年月日时刻向天干地支的八个字的映射,它不是按现行农历排的,但节气和年柱可以参考农历来做判断。由年柱、月柱、日柱、时柱组成,每个柱由一个天干和一个地支组成。

  • 天干:甲乙丙丁午己庚辛壬癸
  • 地支:子丑寅卯辰巳午未申酉戌亥
  • 干支:甲子到癸亥,共 60 个

排柱:

  • 年柱:在立春之前出生的属于上一年,否则属于本年。
  • 月柱:按相隔的两个节气划分一个月
    • 正月:立春至惊蛰前一日
    • 十二月:小寒至立春前一日
    • 天干:正月的天干 = 年天干 +2
    • 地支:十一月为子,正月为寅,二月为卯,依次类推
  • 日柱:在北京时间 23 点到 24 点出生的属于后一天,不属于当天。注意这个算法可能会影响月柱
    • 1949 年 10 月 1 日 = 甲子,60 天一循环。
    • 2001 年 1 月 1 日巧合地 = 甲子。参考日期计算器
  • 经笔者单一数据的验证,天气万年历的年月日柱是准的,如果不考虑时辰的话。
  • 时柱:古人把一天分为十二个时辰,从子时到亥时。
    • 亥时(人定)相当于现在的晚上 9 点到 11 点,人和猪都该睡觉了,也叫二更。
    • 一更(黄昏)是晚上 7 点到 9 点,是戌时,太阳已经落山了,狗开始守门了。
    • 三更(夜半)是次日的子时,是现在的 11 点到次日 1 点。五更(平旦)是寅时,凌晨三点到五点。
    • 地支:等于时辰的地支
    • 天干:参考百度百科的时辰干支查算表,起始点是:日干支甲己 + 子时 = 甲子。