八字春夏秋冬四季算法

频道:八字运势 日期: 浏览:2
八字春夏秋冬四季算法

周一 · 知古通今 | 周二 · 牧夫专栏

周三 · 太空探索 | 周四 · 观测指南

周五 · 深空探测 | 周六 · 茶余星话 | 周日 · 视频天象

作者:葛文迪 郭皓存

校对:牧夫校对组

编排:胡暖暖

后台:库特莉亚芙卡 李子琦 胡永葳 董腾晨

八字春夏秋冬四季算法

一转眼就到了2021年的末尾,元旦到了,除夕还会远吗?在大家忙着总结和整理一年的收获与遗憾并为来年立下美好的flag的时候,你可曾想过,今晚的跨年与大年三十的除旧迎新,阳历与农历,具体的区别是什么?为什么会有这些区别?闰年和闰月为什么要这样设置?闰秒又是什么玩意儿?希望今天笔者的这篇小科普可以解答大家的疑惑,在2021的最后一天增加一个可能有用的小知识。

八字春夏秋冬四季算法

今天的我们可以在手机电脑和电视等设备上随时查看时间与日期,古人自然没有这样的便利之处,而农业生产恰恰又依赖于四季更迭的物候规律,于是古人只得求助于最为直观的时间度量——昼夜交替的一天、月亮阴晴圆缺的一月以及春夏秋冬的一年。

八字春夏秋冬四季算法八字春夏秋冬四季算法八字春夏秋冬四季算法

一天、一月和一年

一天是如何定义的呢?我们知道太阳东升西落,在我们眼中的太阳便是由低到高再到低,而最高的时刻便是正午(12:00),那么两次太阳到达最高的时间间隔便是一天。有的读者可能会想,古人能看出来什么时候太阳最高?一直盯着太阳看会不会有些费眼睛?早就想到这一点的古人于是发明了圭表。太阳最高对应着影子最短把影子的轨迹记下来就可以了,也不需要我们张目对日了。如此便是一天,我们称之为“平太阳日”,一个平太阳日再分成24个平太阳时,每个平太阳时分成60个平太阳分,每个平太阳分分成60个平太阳秒,这与大家日常生活中的“小时-分钟-秒”是一致的。

八字春夏秋冬四季算法八字春夏秋冬四季算法

圭表与日晷的区别

日晷(上图左):人类古代利用日影测得时刻的一种计时仪器,由晷针和晷面组成日晷石制的圆盘叫“晷面”,应根据当地纬度以一定倾角斜着摆放,使晷面平行于赤道面。晷盘上的刻度是等分的,分为子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥十二时辰。根据晷针影子判断处于一天中的哪个时辰。

圭表(上图右):圭表直立于平地上测日影的标杆和石柱,叫做表;正南正北方向平放的测定表影长度的刻板,叫做圭。当太阳照着表的时候,圭上出现了表的影子,根据影子的方向和长度,就能读出时间。通过正午太阳在圭面投影的长短来确定节气。

一月是如何定义的呢?当月球的阴影面朝向地球时(即月相为新月),称为朔;当月相为满月时,称为望。由朔到望再到朔便是一月,我们称之为朔望月。

八字春夏秋冬四季算法

一个朔望月中的月相变化

一年是如何定义的呢?很多读者会想,地球绕太阳一周不就是一年嘛?em...古人看不到地球绕太阳的运动,甚至还认为是太阳绕着地球。那么古人是怎么判断一年过去了呢?其实,如果把每天同一时刻太阳在天空中的位置记录下来的话,我们会发现太阳在天空中画了一个“8”,这便是太阳的周年视运动。自然,古人也是通过圭表来观察,至于这个时刻,正午最方便嘛。这样得到的一年被称为回归年。

八字春夏秋冬四季算法

会画“8”字的不止有蜜蜂,太阳也会呦。太阳位于“8”的最下端时便是冬至,位于“8”的最上端时便是夏至。

现如今我们知道,平太阳日、朔望月和回归年的形成分别源于地球的自转、月球的绕地公转和地球的绕日公转,而且我们也知道这三个运动之间没什么太大关系,所以这三个时间间隔就很难有整数倍关系。用平太阳日作为基准,朔望月是29日12时44分2秒,约为29.5306天,回归年是365日5时48分46秒,约为365.2422天。那么为了方便生产生活,让大家日子过得明明白白,于是人们就协调年、月、日之间的关系并制定了一定的时间序列,也就是历法。基于太阳周年视运动得到的历法便是阳历,基于月相变化得到的历法便是阴历,综合考虑这两者得到的历法便是阴阳历。

接下来,笔者就向大家介绍这三种历法的原理,建议各位读者准备好计算器以及送给古人的666。

八字春夏秋冬四季算法

一、阳历

我们日常生活中使用的公历就是阳历的一种,将一年定义为365天,而回归年是365天5时48分46秒,那么一年下来就少了5时48分46秒。为了方便捋清数量关系,我们把时间都换成秒数,一天总共86400秒(24×60×60=86400),一年下来少了20926秒(5×60×60+48×60+46=20926≈0.2421990741天)。

八字春夏秋冬四季算法

为了减少偏差,人们就在偏差积累到一天左右的时候进行调整,多了就减一天,少了就加一天。这样四年下来就少了83704秒(20926×4=83704 ≈0.9687962963天),接近一天了,那么就规定每四年加一天,即“四年一闰”。不过这样又有问题,加的一天是86400秒,反而多了2696秒(86400-83704=2696),也就是每四年会多2696秒。

八字春夏秋冬四季算法

为了解决这个问题,只要看几个四年后会刚好凑够接近一天,然后跳过那一个闰年就好了。一天86400秒除以2696等于…… 32.0474777448,32个四年(共128年)跳过一次闰年,哇!这样回归年和阳历年只差了128秒!远比之前的四位秒数好。用同样的计算方式,这128秒要86400年才能凑齐下一个一天,人类基本上在地球毁灭之前都不需要再担心128年周期以上的闰年了。

然而,你可能也听说了,比起选择32个四年,也就是128年的周期,我们目前采用的是25个四年也就是100年周期的算法。先让我们看看100年周期的计算方法,再结合阳历历史看看为什么是用 25×4=100 而不是 32×4=128 做为4年往上的闰年周期。

25个四年之后,多出来的时间积累到了67400秒(2696×25=67400) ≈0.7800925926天,也就是说在第一百年的时候跳过原来闰年多出来的一天就好。于是就有了“百年少一闰”。同样的问题再次出现了,一百年下来会少19000秒(86400-67400=19000),四个百年就会少76000秒(19000×4=76000),同理需要加一天,所以就有了“四百年加一闰”。

八字春夏秋冬四季算法八字春夏秋冬四季算法

苹果手机与iPad中的小bug

这就是“四年一闰,百年少一闰,四百年加一闰”的由来,如果你继续算下去,每隔四百年会多出来10400秒(86400-76000=10400),8个四百年会多出来83200秒(10400×8=83200),需要再减一天,口诀再加一句“三千两百年少一闰”;每隔三千两百年会少3200秒(86400-83200=3200),27个三千两百年后就刚好少86400秒,加一天完美收官。完整的口诀就应该是“四年一闰,百年少一闰,四百年加一闰,三千两百年少一闰,八万六千四百年加一闰。”

八字春夏秋冬四季算法

那你会想说,这么麻烦的话不如直接用前面提到的32个四年128年周期不就解决了?这里主要有三大原因,前两个是历史原因:我们现在使用的公历也被称为格里高利历,其脱胎于儒略历。儒略历是由古罗马共和国独裁官盖乌斯·尤利乌斯·恺撒(也叫儒略·恺撒,Jules Caesar)所推行的历法,儒略历规定,逢单为大月31天,逢双为小月30天,二月为特例,平年29天,闰年30天,四年一闰。经过前面我们的计算可知,这样每四年会多2696秒,长此以往,偏差会越来越大。于是,教皇格里高利十三世为弥补这个偏差,在1582年推行格里高利历,将当年的日期从10月4日直接跳到10月15日,同时将置闰的规则调整为现在的“四年一闰,百年少一闰,四百年加一闰”,其余与儒略历相同。

由于当代阳历是在1582年左右被创造出来的,而400多年前的人类无法像我们现在如此精确的测量一年的长度,所以对他们来说,400÷3≈133.33和128年周期的差别其实不大。第二个原因是因为对没有网络的当时来说,一种历法的传播度远比精确度更重要。4/25/100/400 远比 4/32/128更好记忆,也就会更容易让更多人将这种历法作为预设的历法使用。而第三个原因,则是因为前面提到回归年365天5时48分46秒这个长度,本身是在变动的。取决于回归年测量点(中国传统历法的冬至-冬至 或者 罗马用的春分-春分)的不同,这个数值是不一样的。而太阳和地球相对的旋转、地球自转的长度也是会变化的。这三大原因使得阳历的制定不是一个单纯的数学问题,比起制定一个“理论上”可以精确运行几千年的历法,不如结合天文观测后再开会决定是否要额外进行时间上的修正。

八字春夏秋冬四季算法

由于从儒略历调整到格里高利历,1582年10月4日直接跳到10月15日

细心的读者可能注意到了,儒略历中每个月的划分和现在不同呀。当年,恺撒将七月(July)以自己的名字(Jules)命名,他的继任者屋大维觉得这主意不错,于是便将八月(August)以自己的称号(Augustus)命名。只不过八月是小月,只有30天,为了显示自己与恺撒平起平坐,屋大维就强行从二月抽出来一天加在八月,顺带改了后面九月到十二月的大小月顺序。最终便有了现在的“一三五七八十腊,三十一天永不差,四六九冬三十日,只有二月二十八”。

二、阴历

我们平时所谓的阴历其实指的是农历,与这里的阴历不同,伊斯兰教历法(回历)就是阴历,笔者以此为例解释。一个朔望月是29日12时44分2秒,回历规定,12个月为一年,单数月30天,双数月29天,这样平均下来每个月是29.5天,每个月少了2640秒(44×60=2640),一年少了31680秒。此处,我们换个思路,一年少了31680秒相当于少了多少天呢?八字春夏秋冬四季算法,也就是说,按照回历,一年少了八字春夏秋冬四季算法天,那么30年就是少了11天,只需要在30年中加上11天就没有偏差了。为了每年的偏差不至于太大,这11天就分散在30年中的不同年份,回历规定,第2、5、7、10、13、16、18、21、24、26和29年为闰年,在12月份多一天。

八字春夏秋冬四季算法

为纪念穆罕默德于公元622年率穆斯林由麦加迁徙到麦地那这一重要历史事件,伊斯兰教第二任哈里发欧麦尔决定把该年定为伊斯兰教历元年,并将伊斯兰教历命名为“希吉来”(阿拉伯语“迁徙”之意)。以阿拉伯太阳年岁首(即儒略历公元622年7月16日)为伊斯兰历元年元旦。伊斯兰教历的平年354天,闰年355天,30年中有11个闰年,其最大的特点是不置闰月。图为麦加天房。

根据计算可以知道,阴历的准确度是非常高的,但是为什么没有大范围推广呢?各位读者回想一下,现在一年365天,四季所对应的月份基本上是固定的,而阴历一年只有354天,就算是闰年也只是355天,一年下来就相差十多天,十年就相差一百多天,四季对应的月份是变化的,这对于生产生活来说颇为不便。例如,回历的九月是斋月,白天断绝饮食,沐浴祷告,最后一天还有开斋节,而从公历来看,回历的斋月每3年就要往前挪一个月,在不同的季节过节(脑补一下在夏天过春节,可能还挺有意思的)。这一点根本上是因为阴历的制定没有考虑太阳的周年视运动,四季的划分并没有被考虑在内,因而造成了月份的漂移。

八字春夏秋冬四季算法

回历中的第九个月为斋月,斋月的最后一天是盛大的开斋节,2021年的开斋节为5月13日,而2015年的开斋节则为7月18日。

三、阴阳历

我们的农历便是阴阳历的一种,综合考虑了太阳的周年视运动和月相变化,听着就比前两者高端。农历的月份与阴历的月份相同,单数月30天,双数月29天,那如何兼顾太阳的周年视运动呢?这便是我国古人发明的二十四节气系统。

八字春夏秋冬四季算法

二十四节气表

由于冬至这天的正午太阳高度是全年最低的,所以可以通过测量圭表的影长来确定冬至日,两个冬至日之间就是一个回归年,然后将这样得到的回归年等分为24段。根据前文我们已经知道一个回归年相当于365.2422天,那么这样得到的一段就相当于15.2184天(365.2422÷24≈15.2184)。这24段由12个节气和12个中气相间排列组成,相邻两个节气间隔30.4368天(15.2184×2=30.4368),而一个朔望月相当于29.5306天,那么一个节气加一个中气就比一个朔望月长了0.9062天(30.4368-29.5306=0.9062)。

八字春夏秋冬四季算法

二十四节气实际上就是将地球绕日公转的轨迹等角度分为24份,地球在每个节气转过的角度都是15度。由于地球绕日公转的速度不同,靠近太阳的时候较快,远离太阳的时候较慢,导致农历三月到七月比较容易置闰,元月以及九月到十二月则很难置闰。

其结果便是,假如刚开始节气在月初第一天,中气就在月中,由于这一对节气和中气比这个月长了0.9062天,那么下一对节气和中气就会在下个月后移一天。每过一个月就会后移一些,直到节气刚好在这个朔望月的中间,前一个中气在上个朔望月的最后一天,后一个中气在下个朔望月的第一天。这个月没有了中气,这就意味着偏差已经足够大了,我国农历规定,每逢遇到缺少中气的月份,便紧接着多加一个闰月,那么农历这一年就变成了13个月,从公历的角度来看,这一年的除夕就会来得比较晚。

总的来看,农历是以阴历为基础,以回归年作为检验偏差的标尺,通过二十四节气的形式来实时监测朔望月与回归年的偏差,不得不为老祖宗的智慧所折服。

八字春夏秋冬四季算法

四、闰秒

闰秒虽然也有一个“闰”字,但其实和前面提到的闰年和闰月不同,与历法并无关联。

我们在前面基于地球自转得到了一天的定义,也就是平太阳日,并由此定义了平太阳时、平太阳分和平太阳秒,那么这里的“一秒”本质上是由地球自转所决定。然而,在上世纪的国际计量大会上,“一秒”被重新定义为“铯-133原子基态的两个超细能级之间跃迁所对应辐射的9192631770个周期的持续时间”,这样的一秒被称为原子秒。平太阳秒和原子秒是两个截然不同的过程得到的定义,自然不会严格相等。

八字春夏秋冬四季算法

铯原子束管

其实,如果平太阳秒与原子秒之间的偏差是个定值的话,我们也可以像历法那样协调二者关系。只不过,由于月球对地球的引力等因素,地球的自转速度并不一致,且在一点点变慢,当然,这也是人们改用铯原子重新定义一秒的原因。现如今,每当平太阳秒与原子秒相差超过0.9秒,我们就会加减1闰秒,由于地球自转速度的不均匀,对闰秒的加减并无规律。

八字春夏秋冬四季算法

有正闰秒时,就会出现“59分60秒”;有负闰秒时,就会去掉“59分59秒”

对于大部分人来说,人生多一秒和少一秒的差别真的不大,但是对于计算机领域来说,多一秒和少一秒可能就会带来灾难。由于闰秒的定义来自于精确的绝原子钟和观测地球自转之间的时间差,而观测数值会因各种原因产生不确定性,闰秒的加减并无规律,全由几个国际组织在发生的6个月前决定,所以在编写程序时就无法将这样的时间调整提前设置好。

八字春夏秋冬四季算法

世界时和标准时的偏差变化表,每条竖线代表了一次闰秒。可以说闰秒存在的目的就是为了让这个值维持在±0.8秒内。(Credit: Wikipedia)

计算机领域广泛使用的UNIX time,定义为从UTC1970年1月1日0时0分0秒起至现在的总秒数,(例:北京时间2022年1月1日0点0分1秒对应的UNIX time为1640995201)就因为闰秒的存在需要特殊设计来保证全球万千电脑的正常运转。如果你是UNIX time的设计者你会怎么处理闰秒呢?你有选择一:计算每个闰秒,和选择二:忽略每个闰秒。

计算每个闰秒代表UNIX time真实体现了1970年到现在经过的原子秒数,好处是对计算机来说,“时间”永远会均匀的正向流动,且变化速率永远是均匀的。但如果你需要将这个“时间”和人类熟悉的年月日时分秒进行转换,你需要知道1970年到现在每次的闰秒,进行对应的加减,才能得到年月日时分秒格式下正确的时间。

忽略每个闰秒的UNIX time则是我们选择的道路,和第一种选择相反,它确保了换算的简易性,但也同时使得UNIX time不保证“时间”是永远向“未来”的,也不保证电脑上的一秒和原子秒的长度永远是对应的。最知名的问题就是2012年欧美大型论坛网站Reddit离线了一个半小时。只要一个庞大电子系统里面任何一部分没有考虑到“时间可能会重复”这个问题,就有可能导致整个系统的崩溃。

八字春夏秋冬四季算法

当然各个大公司也已经吸取教训以减少此类问题对自己系统的影响。比如说美国科技巨头Google 2008年就推出了Leap Smear,在闰秒发生的前后一小时将每秒长度稍稍进行改变来避开“时间”往回,或者“时间”暂停的问题。安卓手机如果是向Google的NTP Server(网络时间协议服务器) 同步时间,也会观察到遇到闰秒比起显示12:59:59→12:59:60→00:00:00自己的手机会自行直接从12:59:59变成00:00:00。此外,亚马逊旗下的AWS也是采取一样的做法。

八字春夏秋冬四季算法

1971年国际计量大会通过决议,每当平太阳秒与原子秒相差超过0.9秒,国际地球自转服务组织(IERS)就负责加减1闰秒,图为1972年至今的闰秒一览表。

对此,有人主张废除闰秒,一律采用“原子时”,为高科技领域保驾护航;有人主张保留闰秒,维系时间与太阳之间的联系。下一次决定闰秒存废问题将会是2023年的世界无线电通信大会,不知道各位读者主张哪一方呢?

结语

人类的历法结合了自然(源自天体运行)和人文(最终是给人看的)两大因素,实在是一个庞大的、一篇文章说不完的东西。

但还好我们日常不用担心这些事情,因为有无数天文领域的前辈帮我们进行了计算、总结,比如说牧夫天文2022年的爱牧夫·星达天文年历,长达48页的内容囊括了整年的天象预报、日月食奇观和国家航天局独家授权的精美天文图片。不长按下方图片购买一下吗?

八字春夏秋冬四季算法

最最最后,在这个2021年的结束,感谢大家一直以来对牧夫天文的支持、爱戴与鞭策,牧夫天文团队会在2022年继续成长,继续陪着大家,也祝大家在2022年一切顺利,我们一个月后农历新年再讲一次一样的话。

责任编辑:郭皓存

牧夫新媒体编辑部

八字春夏秋冬四季算法

这张增强的天王星环的假彩色照片是1986年1月21日旅行者2号拍摄的,距离259万英里。