根据日期推算星期和历法由来,在现行公历中被

2019-11-01 17:59 来源:未知

在现在通行的历法记载上,世界历史上居然有10天——1582年10月5日至10月14日——根本不存在。这是怎么回事呢? 以回归年周期为主要依据所编制的“太阳历” 太阳历又称“阳历”。它不考虑月相的变化如何,只考虑地球绕日公转一周即一个回归年的时间长短。我们知道,地球总是斜着身子绕日不停地作圆周运动,公转一周的时间是365.2422日(即365天5时48分46秒)。如果人为地设置十二个月,小月为三十天,大月为三十一天,仍然由于一回归年后有一个小数点尾巴带来的问题。后来人们又想出了设置闰年的办法来解决这个问题,譬如平年365天,闰年366天,以便保证阳历年的长度与实际回归年的长度基本吻合。 与西汉王朝同时代的古罗马帝国也是文明古国之一,曾经使用的是以朔望月为依据的阴历,后来为了协调与回归年的关系,采用了各种设置闰月的办法,但始终是一个混乱无序的“阴阳历”。公元前四十六年,儒略.恺撒掌握军政大权后,聘请了天文学家索西琴改革历法,其要点是: 1、全年十二个月,单月为大月三十一天,双月为小月三十天,平年的二月为二十九天,全年共计三百六十五天, 2、冬至后十月为一年的开始,即为每年的岁首。 3、从改历的下一年起,每三年是一闰年,闰年共计三百六十六天,所多的一天放在二月尾,为三十天。 这就是现行流行的阳历的前身,一般称“儒略历”,其中七月因儒略.恺撒的出生而命名为“儒略月”。然而负责执行的僧侣们误把“每隔三年置一闰年”理解为“每三年置一闰年”,并一直错误执行了三十多年,到公元前九年屋大维统治时,人们发现三十多年中已多设置了闰年五次,于是屋大维下令在以后的一段年份里少设三次闰年,并恢复原来每四年设置一闰的规定。屋大维是把自己的出生的八月命名为奥古斯都月,于是把原来属于小月的八月改为大月,多出的一天从二月中扣出。同时,为了避免一连三个大月,又把九月和十一月改为小月,十月和十二月改为大月。这一不合理的规定一直延续到现在。 儒略历规定每年平均长度是365.25天,比实际回归年长出0.0078天,即每年长出12分14秒。这点差值在短期内难以发现,但只要过128年,历法规定的年就要多出回归年一天,公元325年,至高无尚的的欧洲基督教教会召开宗教大会,一致确定儒略历是最准确的历法并全面推行。并根据天文观测和宗教活动的需要,规定春分日必须是三月二十一日,而纪念耶稣死后复活的复活节定在春分满月后的第一个星期日,到公元1582年,随着哥白尼太阳中心说的确认和天文观测的技术的进步,发现实际春分时刻已提前到三月十一日,比原定的三月二十一日提前十天,当时的罗马教皇格列高列十三世便召集天文学者和僧侣们商讨改历问题,最后决定采用天文学家利里奥的改革方案。1、为使春分时刻再回到三月二十一日,把1582年月10月4日以后的一天改为10月15日,从中删去10天。 2、采用400年97闰法,即凡公元年号能被4整除为闰年,但公元年号为整百年时,须能被400整除者方为闰年,(如1600年、2000年)。其它为平年(如1700年、1900年)。 这就是目前世界上通用的阳历,又称“格列历”。至于岁首和纪元的设置,也是人为而定。现在的岁首是儒略.恺撒颁布历法时规定的,即定在冬至后十天为一月一日,因此有“冬至十天阳历年”的说法。古代欧洲和我国过去一样常采用“王位纪年法”,即将某个统治者登基作为纪年的开始,在西欧的罗马帝国则以罗马统治者狄奥.支列颠称帝时作为纪年的开始。后来有个叫狄奥尼亚的基督僧侣在预先推算狄奥支列颠纪元248年的“复活节”日期时,提出所谓耶稣诞生于狄奥.支列颠纪元前284年的说法,并主张以耶稣诞生的一年为纪元。它的主张竟然得到教会的大力支持,这样,狄奥支列颠248年就成为耶稣诞生纪年的532年。因此,现行的公历纪年,实际上从公元532年才在一些地区开始实行,到现在逐步成为全世界通用的正式纪年. 独具特色的我国农历 与现行阳历并用的农历,一直是我国的传统历法,也是我国古代以来农民安排农事活动的重要依据。因此,称之为“农历”。其大致的做法是: 1、朔望月周期是29.5306天,因此农历规定大月三十天,小月二十九天,但大小月并不因定顺序,而是由两次合朔之间的天数来决定。前提为凡是有合朔时刻的一天,必定为初 2、若一年为十二个月,共计354天多,比实际回归年少11天多,长此下去月序与节令气候不吻合,因此采取设置闰月的办法来调整。大概在春秋时代采用“十九年七闰的办法,即每十九年,插入七个月,一般还把不会“中合”的月份定为闰年(二十四节中,单数则叫“节气”,双数则叫“中气”。) 二十四节气是我国劳动人民的一个创造。它能准确地反映太阳在黄道上的位置,生动地体现了地面上寒暑四季变化的循环规律,同时也具有鲜明的节气特点和浓郁的乡土气息,主要是黄河中下游地区。共顺序依次是:立春,雨水,惊蛰,春分,清明,谷雨,立夏,小满,芒种,夏至,大暑、小暑、立秋、处暑、白露、秋分、寒露、霜降、立冬、小雪、大雪、冬至、小寒、大寒。从它的含义上看,有反映天象的,如立春、春分、立夏、夏至、立秋、秋分、立冬、冬至,其中夏至和冬至是太阳直射点分别在北回归线和南回归线的时刻,而春分与秋分时太阳直射点均在赤道上。也有表示气候的,如雨水、清明、谷雨、小暑、大暑、处暑、白露、寒露、霜降、小雪、大雪、小寒、大寒。还有表示物候的,如惊蛰、小满、满种等。下面根据二十四节气编成的谚语能反映出节气与农事安排的关系。如“立春耕牛走”,“清明种瓜豆”,“谷雨播大田”,“小满粒长满”,“芒种忙收种”,“夏至秧苗全”,“处暑备也镰”,“小寒忙买办”,“白露谷登场”,“大寒要过年”,为了便于记记忆,二十四节气中每取一字,可能编成一首顺口溜。“春雨惊春清谷天,夏满芒夏暑相连,秋处露秋寒霜降,冬雪雪冬大小寒”。农历还有一套特有的纪年和纪日方法,就是所谓的“干支纪法”。干支即“天干”“地支”的总称,以甲、乙、丙、丁、戌、已、庚、辛、王、癸、申10个这字为“天干”,以子丑、寅、卯、辰、已、午、未、申、酉、戌、亥十二个字为“地支”,并让相应的天干与地支有序组合,便可得到60以不同的干支,60年一个循环,往复不断。到了近代人们习惯有用干支纪年来表明某些重要的历史事件,如1894年的甲午战争,1898年的辛亥革命。干支纪法比较繁琐,此不评述。 在现在通行的历法记载上,全世界居然有十天没有任何人出生过,也没有任何人死亡过,也没有发生过大大小小值得纪念的人或事。这就是1582年10月5日至10月14日 持续时间为0的一年是什么意思? 事实上,目前世界通行的公历中,就有持续时间为0的10天,即公元1582年10月5日至14日。事情是这样的: 西方历法的第一次改革是罗马朱利乌斯·凯撒大帝于公元前45年亲自引进的。当时采用的数字是一年365.25天,于是朱利安历法成为最简单的历法:第一、二、三年都是365天,三年余下的0.25天给第四年,第四年就有366天,这就是闰年。于是重复365,365,365,366的周期,每年都是整数。 但是,一个太阳年不刚好是365.25天,而是 365.242199…天,每年相差11分14秒,也就是朱利安历法中每年多算了11分钟14秒。由于误差不太大,头几年没什么关系,凯撒活着时影响还不大。但是,一年又一年,误差累积起来,朱利安历法就与实际的太阳年不合拍了。例如每年春分在3月21日前后,但几个世纪后,春分在朱利安历法上的日期越来越提前了,这对农民种地不方便,对教会确定复活节在哪一天也带来麻烦。由于朱利安历法是凯撒亲自制定的,上述情况对他的威信是一个沉重打击。 16世纪时,教皇格利戈里八世进行了一次校正。因为到16世纪,每年11分14秒已经累积成10天,也就是历法上多了10天,这对于确定复活节造成严重困难,不得不采取措施补救。为此,格利戈里采取了解决此类难题的最古老最有效的策略——他召集一个委员会,任命一位聪明的主席,即杰出的耶稣会数学家克利斯多弗·克拉维斯(Christopher Clavius),要求委员会提出解决方案。委员会于1587年开始工作。 克拉维斯委员会面临两个不同的问题,它用不同的方法进行解决。第一,朱利安历法现在走快了10天,必须拉回到与太阳年一致。克拉维斯建议用官方声明把这10天抹掉!教皇格利戈里八世于1582年2月24日以教皇训令颁布,将1582年10月5日至14日抹掉,于是这10天就消失了,一去不复返。1582年10月4日过完了,第二天已经是10月15日了,于是历法又回到与太阳年同步。 当时以及后来有许多人对此感到惊愕,有人认为荒唐、武断。“教皇一纸训令就能抹掉日历上的10天?” 但是,这10天的确不存在了,这10天什么也没有发生,这10天根本就没过日子。如果你能找到当时的日记,10月4日记完后,下一页就是10月15日的事。用科学语言表达,这10天的持续时间为0。 其实完全不必惊讶。太阳年、太阳日与自然现象有联系,至于某一天是什么日子,则是人为的,与给小孩起名字一样。我们可以不用公历,一年不分月,只叫第1天,第2天,……第125天,……到第365天,这是允许的。喜欢偶数的人可以发明一个“偶数日历”:2月2日,2月4日……4月2日……12月30日,12月32日……,14月2日,这也是允许的,只要一年365天或者366天就行。这再一次证明,在一个科学理论或体系中区分出由自然现象决定的部分和人为规定的部分是重要的。 当然,这个决定对当时的社会生活也会有一定影响,例如出生在10月5日至10月14日的人在1582年找不到自己的生日,但与出生在2月29日的人相比,少过一年生日算不了什么。还有,那年10月份的工资、利息也会有问题,但不知那时的银行、工资制度什么样。 第二个问题是需要提出历法的补充规则,不让每年多出的11分14秒累积得太多。于是克拉维斯委员会提出一年有365.2422天的方案,这比朱利安历法的365.25天大大接近天体运动实际。据此对朱利安历法只有“四年一闰”的简单规定进行校正:四年一闰,但是世纪之交的00年,如100年,200年,不闰,即每一百年少闰一次。这样一算,闰年又太少了,于是进一步规定:每四个世纪的世纪之交,即400年,800年等仍是闰年。最终关于闰年的规定为:用4除尽的年份仍是闰年。教皇训令也批准了这个校正。经过这两个校正的朱利安历法叫格利戈里历法,也就是我们现在用的公历。由于格利戈里历法中的年与太阳年仍有误差,还需要进一步校正,不过二者只相差25.96秒,每过2800年才相关一天,在实际生活中没什么影响。这样,1900年不是闰年,但2000年是闰年,每400年才遇到一次。又一个特殊性! 格利戈里历法很快在罗马天主教势力范围内被普遍接受,但是在英国却引起了一片喧嚣的反对声。英国人仍然坚持朱利安历法,拒绝“抹掉10天”。直到1752年,英国人才想通,理性终于占了上风,不过从1582年到那时,历法又多出了1天,所以英国议会在1752年作出决定,抹掉11天——1752年9月3日至13日,至此才接受了格利戈里的改革。由此可以看到,一次历法改革是多么不容易,对于一个聪明、合理的决定,仅仅因为看上去有点怪就有人反对,竟然花了快二百年才接受! 公元1582年10月4日之前采用儒略历,公元1582年10月15日之后采用格里(Gregorian)历。公元1582年10月5日到10月14日是格里历中被删掉的十天。 1582年10月4日,相当于中国的明朝神宗万历十年九月十八日癸酉;1582年10月15日,相当于中国的明朝神宗万历十年九月十九日甲戌。以上内容由历史新知网整理发布(www.lishixinzhi.com)如若转载请注明出处。部分内容来源于网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

太阳历和公历(儒略历与格里历) 现在世界上通用的历法——公历,有人曾似是而非地称之为“西历”。其实,究其根 源,这种历法并非产生于西方,而是产生于6000多年前的古埃及。     古埃及气候炎热,雨水稀少,但是农业生产却很发达。这是为什么呢?原来这与尼罗河 的定期泛滥有着密切的关系。埃及的大部分国土都是沙漠,只有尼罗河流域像一条绿色的缎 带从南到北贯穿其间。直到现代,埃及的的95%以上的人口也都集中在这条绿色的生命带 中。因此,在希腊时代,西方人便把埃及称为“尼罗河送来的礼物”。古代埃及人更是将尼 罗河视为“母亲河”。     尼罗河全长6648公里,同亚洲的长江、南美洲的亚马逊河和北美洲的密西西比河并 称为世界最长的河流。     尼罗河发源于赤道一带,主流叫白尼罗河,从乌干达流入苏丹,在喀土穆和发源于埃塞 俄比亚的青尼罗河汇合,流入埃及。     在埃及境内,尼罗河每年6月开始涨水,7至10月是泛滥期,这时洪水夹带着大量腐 殖质,灌满了两岸龟裂的农田。几个星期后,当洪水退去时,农田就留下了一层肥沃的淤 泥,等于上了一次肥。11月进行播种,第二年的3至4月收获。尼罗河还有一个特性,那 就是每年的涨水基本是定时定量,虽有一定的出入,但差别不是太大,从没有洪水滔天淹没 一切的大灾。这就为古埃及人最早创建大规模的水利灌溉系统和制定历法提供了方便。     古埃及人为了不违农时,发展农业生产,逐渐认识到必须掌握尼罗河泛滥的规律,准确 地计算时间,这就需要有一种历法。他们在长期的生产实践中,积累了许多经验。     古埃及人发现尼罗河每次泛滥之间大约相隔365天。同时,他们还发现,每年6月的 某一天早晨,当尼罗河的潮头来到今天开罗附近时,天狼星与太阳同时从地平线升起。以此 为根据,古埃及人便把一年定为365天,把天狼星与太阳同时从地平线升起的那一天,定 为一年的起点。一年分为12个月,每月30天,年终加5天作为节日,这就是埃及的太阳 历。     埃及的太阳历将一年定为365天,与地球围绕太阳公转一圈的时间(回归年)相比 较,只相差四分之一天,这在当时已经是相当准确了。但是,一年相差四分之一天不觉得, 经过4年就相差一天。经过730年,历法上的时间就比实际时间推进了半年,冬天和夏天 正好颠倒过来。再过730年,才能回到原来的起点。公元前46年,罗马统帅儒略·凯撒 (又译朱利乌斯·凯撒)决定以埃及的太阳历为蓝本,重新编制历法。凯撒主持编制的历 法,被后人称为“儒略历”。     儒略历法对埃及太阳历中每年约四分之一天的误差,作了这样的调整:设平年和闰年, 平年365天,闰年366天。每4年置1个闰年。单月每月31天,双月中的2月平年2 9天,闰年30天,其它双月每月30天。     恺撒死后,他的继承人奥古斯都因为自己生在8月,便从2月中抽出一天加在8月上, 使8月也成为大月,即31天,同时相应把9、11两个月定为小月,10、12两个月定 为大月。经过这样的改动,各月的天数与今天使用的公历基本相同了。公元325年,罗马 皇帝君士坦丁在一次宗教会议上,规定儒略历为基督教的历法,但没有规定哪一年是它的起 点。到了公元6世纪时,基督教徒把500多年前基督教传说的创始人耶稣·基督诞生的那 一天,说成是公元元年。“公元”的拉丁文的意思就是“主的生年”,用拉丁文A.D.表 示。在这一年以前,称为“公元前”,英文的意思是“基督以前”,用英文B.C.表示。     儒略历虽然比埃及的太阳历进了一步,但回归年仍有11分14秒的误差,积128年 又要相差一天。儒略历在欧洲通行了1600多年,至16世纪下半叶,历法上的日期比回 归年迟了10天。比如,1583年的春分应在3月21日,历法上却是3月11日。此 外,教会规定耶稣复活节,应在过春分月圆后的第一个星期日,由于春分已相差10天之 多,耶稣究竟在哪一天“复活”的,也成了问题。因此,对儒略历作进一步的改革,已经势 在必行。     罗马教皇格里高利十三世,在1582年组织了一批天文学家,根据哥白尼日心说计算 出来的数据,对儒略历作了修改。将1582年10月5日到14日之间的10天宣布撤 销,继10月4日之后为10月15日,所以1533年的春分又复归于3月21日;过去 将4年置1个闰年,400年共计100个闰年,现在改为400年中有97个闰年,从而 大体上弥补了11分14秒的误差。置闰的方法是:凡是逢百年那一年可以用400除尽的 就是闰年,除不尽的就不是(如:1600年是年,1700年、1800年、1900年 皆不是年,2000年是闰年)。后来人们将这一新的历法称为“格里高利历”,也就是今 天世界上所通用的历法,简称“格里历”或公历。     中华人民共和国成立后,中央人民政府通令,中国以格里历为国家历法,并采用公元纪 年,但不废除农历。     当然,格里历也不是尽善尽美的,每月的天数仍然参差不齐,规则性不强,特别是每经 过三千几百年还会有一天的误差。随着生产的发展和天文学的进步,这些缺陷将不断得到改 进。 出处:

 ====================================================

再谈星期的计算

“让我们看看1752年9月14号这个星期四吧,我们的公式最远只能推算到这里了。”
              ——Kim S. Larsen

“从公元元年1月1日开始到现在,每一天都是连续的。”
                                         ——于鹏

“西方历法的第一次改革是罗马朱利乌斯·凯撒大帝引进的。他采用的四年一闰的闰年方式。由于一个太阳年不刚好是365.25天,而是 365.242199…天。到16世纪,每年11分14秒的误差已经累积成10天,也就是历法上多了10天。于是教皇格利戈里八世进行了一次校正。他在1582年2月24日以教皇训令颁布,将1582年10月5日至14日抹掉,并且对原来的闰年方法进行了校正。经过校正的历法叫格利戈里历法,也就是我们现在用的公历。1752年,英国人决定采用格利戈里历法,不过从1582年到那时,历法又多出了1天,所以英国议会在1752年作出决定,抹掉11天——1752年9月3日至13日。”

日期的限制是Kim S. Larsen算法的问题吗?不。
公元元年1月一日开始到现在,每一天都是连续的吗?不。
一个简单的方法就可以证明上述事实——用Linux的cal命令。启动你的Linux在#提示符下输入
cal  9  1752
你会看到:
    September 1752
    Su  Mo  Tu  We  Th  Fr  Sa
                  1   2   14  15  16
     17  18  19  20   21  22  23
     24  25  26  27   28  29  30
有趣吧一个只有19天的九月。
让我们来看看这两个算法,Kim S. Larsen博士的算法和于鹏同学的算法在本质上其实是相同的。只不过在实现的细节上略有不同。如果让两个算法去计算同一天(无论在1752年9月14日之前还是之后)是星期几,二者的答案肯定是相同的。让我们来分析一下吧。
首先,他们把日期对星期的决定作用都分为年、月、日三个决定因素。对于年的因素,从两者的计算公式  就能看出是相同的;对于日的因素,两者都是直接计入,故也是相同的;而对于月的因素,Kim S. Larsen博士构造了一个公式,(一个非常巧妙的公式,)通过以月份为自变量算出的函数值作为对星期的影响量。而于鹏同学采用了查表的方法,即先构造好一个以月份为索引的表对于相应的月份,通过查表得出其对星期的影响量。(以switch语句实现)不妨作如下演算:(为了一致起见,采用一、二月作为上年的十三、十四月。这是一个非常聪明的方法。)用于鹏同学的方法建表,并对7取模(表一)。再建立Kim S. Larsen函数 的函数值表(表二)。很显然二者是相同的。

三月    0      0 | 三月    0 
四月    31    3 | 四月    3 
五月    61    5 | 五月    5 
六月    92    1 | 六月    1 
七月    122  3 | 七月    3 
八月    153  6 | 八月    6 
九月    184  2 | 九月    2 
十月    214  4 | 十月    4 
十一月 245  0 | 十一月 0 
十二月 275  2 | 十二月 2 
十三月 306  5 | 十三月 5 
十四月 337  1 | 十四月 1 

表一                      表二

其次,在处理闰年2月29日的问题上,两者的做法略有不同,但效果还是相同的。Kim S. Larsen博士采用的方法相当高明,他把二月排在一年的最后,管他闰不闰,反正是最后一天。而于鹏同学加了一个if分支,直观有效。
大师不愧为大师,设计的算法简洁、优美;而于鹏同学的算法,简单易懂,并且效率并不差。
好了,该解决这个“历史遗留问题”了。其实,并没有什么数学公式能算出指定日期是星期几,我们可以试着拼凑一个,不过何必呢?加个if分枝不就解决问题了吗?(Kim S. Larsen算法 于鹏思想)对Kim S. Larsen 博士的程序作一些必要的添加,可得到突破1752年9月14日日期限制的C语言程序。
/*C Builder5下编译通过*/
/*假设输入的是正确的日期*/
#include <stdio.h>
char *name[] = { "Monday",
              "Tuesday",
              "Wednesday",
              "Thursday",
              "Friday",
              "Saturday",
              "Sunday"
               };
void main(){
  int D,M,Y,A;
  printf("Day: "); fflush(stdout);
  scanf("%d",&D);
  printf("Month: "); fflush(stdout);
  scanf("%d",&M);
  printf("Year: "); fflush(stdout);
  scanf("%d",&Y);
  if ((M == 1) || (M == 2)){/*一月、二月当作前一年的十三、十四月*/
    M = 12;
    Y--;
  }
  if ((Y < 1752)||((Y == 1752)&&(M < 9))
             ||((Y == 1752)&&(M == 9)&&(D < 3)))/*判断是否在1752年9月3日前*/
    A = (D 2*M 3*(M 1)/5 Y Y/4 5) % 7;/*1752年9月3日前的公式*/
  else A = (D 2*M 3*(M 1)/5 Y Y/4 - Y/100 Y/400) % 7;/*1752年9月3日后的公式*/
  printf("It's a %s.n",name[A]);
}

出处:

==================================================

根据日期推算星期作者: 宋维业

      记得几年前,有个新闻报道说,有个人记忆力很强,可以记住任意日期是星期几。

      我感觉不太靠谱,其实,这个星期几是可以通过公式计算出来的。

其中一种叫做基姆拉尔森计算公式:

      公式是W= (d 2*m 3*(m 1)/5 y y/4-y/100 y/400) mod 7

  在公式中d表示日期中的日数 1,m表示月份数,y表示年数。

  注意:在公式中有个与其他公式不同的地方:

  把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。

 

还有蔡勒公式:

 

        W = [C/4] - 2C y [y/4]

  • [13 * (M 1) / 5] d - 1

 

或者是:w=y [y/4] [c/4]-2c [26(m 1)/10] d-1

 

公式中的符号含义如下:
w:星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
c:世纪-1(前两位数)
y:年(后两位数)
m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)
d:日
[ ]代表取整,即只要整数部分。

 

 

      另外,还有个事情,这个公式只能计算1582年10月15日(含)之后的情形。

      原因是什么呢?

    在现在通行的历法记载上,全世界居然有十天没有任何人出生过,也没有任何人死亡过,也没有发生过大大小小值得纪念的人或事。这就是1582年10月5日至10月14日,持续时间为0。

  事实上,目前世界通行的公历中,就有持续时间为0的10天,即公元1582年10月5日至14日。事情是这样的:

  西方历法的第一次改革是罗马朱利乌斯·凯撒大帝于公元前45年亲自引进的。当时采用的数字是一年365.25天,于是朱利安历法成为最简单的历法:第一、二、三年都是365天,三年余下的0.25天给第四年,第四年就有366天,这就是闰年。于是重复365,365,365,366的周期,每年都是整数。

  但是,一个太阳年不刚好是362.25天,而是 362.242199…天,每年相差11分14秒,也就是朱利安历法中每年多算了11分钟14秒。由于误差不太大,头几年没什么关系,凯撒活着时影响还不大。但是,一年又一年,误差累积起来,朱利安历法就与实际的太阳年不合拍了。例如每年春分在3月21日前后,但几个世纪后,春分在朱利安历法上的日期越来越提前了,这对农民种地不方便,对教会确定复活节在哪一天也带来麻烦。由于朱利安历法是凯撒亲自制定的,上述情况对他的威信是一个沉重打击。

  16世纪时,教皇格利戈里八世进行了一次校正。因为到16世纪,每年11分14秒已经累积成10天,也就是历法上多了10天,这对于确定复活节造成严重困难,不得不采取措施补救。为此,格利戈里采取了解决此类难题的最古老最有效的策略----他召集一个委员会,任命一位聪明的主席,即杰出的耶稣会数学家克利斯多弗·克拉维斯(Christopher Clavius),要求委员会提出解决方案。委员会于1587年开始工作。

  克拉维斯委员会面临两个不同的问题,它用不同的方法进行解决。第一,朱利安历法现在走快了10天,必须拉回到与太阳年一致。克拉维斯建议用官方声明把这10天抹掉!教皇格利戈八世于1582年2月24日以教皇训令颁布,将1582年10月5日至14抹掉,于是这10天就消失了,一去不复返。1582年10月4日过完了,第二天已经是10月15日了,于是历法又回到与太阳年同步。

  当时以及后来有许多人对此感到惊愕,目瞪口呆,有人认为是荒唐、武断。“教皇一纸训令就能抹掉日历上的10天?”

  但是,这10天的确不存在了,这10天什么也没有发生,这10天根本就没过日子。如果你能找到当时的日记,10月4日记完后,下一页就是10月15日的事。用科学语言表达,这10天的持续时间为0。

  其实完全不必惊讶。太阳年、太阳日与自然现象有联系,至于某一天是什么日子,则是人为的,与给小孩起名字一样。我们可以不用公历,一年不分月,只叫第1天,第2天,……第125天,……到第365天,这是允许的。喜欢偶数的人可以发明一个“偶数日历”:2月2日,2月4日……4月2日……12月30日,12月32日……,14月2日,这也是允许的,只要一年365天或者366天就行。这再一次证明,在一个科学理论或体系中区分出由自然现象决定(因而必须符合实验)的部分和人为规定的部分是重要的。

  当然,这个决定对当时的社会生活也会有一定影响,例如出生在10月5日至10月14日的人在1582年找不到自己的生日,但与出生在2月29日的人相比,少过一年生日算不了什么。还有,那年10月份的工资、利息也会有问题,但不知那时的银行、工资制度什么样。不过这些问题的影响微乎其微。

  第二个问题是需要提出历法的补充规则,不让每年多出的11分14秒累积得太多。于是克拉维斯委员会提出一年有365.2422天的方案,这比朱利安历法的365.25天大大接近天体运动实际。据此对朱利安历法只有“四年一闰”的简单规定进行校正:四年一闰,但是世纪之交的’00年,如100年,200年,不闰,即每一百年少闰一次。这样一算,闰年又太少了,于是进一步规定:每四个世纪的世纪之交,即400年,800年等仍是闰年。最终关于闰年的规定为,用4除尽的年份仍是闰年。教皇训令也批准了这个校正。经过这两个校正的朱利安历法叫格利戈里历法,也就是我们现在用的公历。由于格利戈里历法中的年与太阳年仍有误差,还需要进一步校正,不过二者只相差25.96秒,每过2800年才相关一天,在实际生活中没什么影响。这样,1900年不是闰年,但2000年是闰年,每400年才遇到一次!又一个特殊性!

  格利戈里历法很快在罗马天主教势力范围被普遍接受,但是在英国却引起了一片喧嚣的反对声,英国人仍然坚持朱利安历法,拒绝“抹掉10天”。直到1752年,英国人才想通,理性终于占了上风,不过从1582年到那时,历法又多出了1天,所以英国议会在1752年作出决定,抹掉11天----1752年9月3日至13日,至此才接受了格利戈里的改革。请注意,英国历史中,这11天什么也没有发生。由此可以看到,一次历法改革是多么不容易,对于一个聪明、合理的决定,仅仅因为看上去有点怪就有人反对,竟然花了快二百年才接受!

       附录一个基姆拉尔森计算公式C语言程序

#include "stdio.h"

void CaculateWeekDay(int y,int m, int d)
{
    if(m==1||m==2) {
        m =12;
        y--;
    }
    int iWeek=(d 2*m 3*(m 1)/5 y y/4-y/100 y/400)%7;
    switch(iWeek)
    {
    case 0: printf("星期一n"); break;
    case 1: printf("星期二n"); break;
    case 2: printf("星期三n"); break;
    case 3: printf("星期四n"); break;
    case 4: printf("星期五n"); break;
    case 5: printf("星期六n"); break;
    case 6: printf("星期日n"); break;
    }

void main()
{
    int year=0,month=0,day=0;
    printf("请输入日期:n格式为:1900,1,1n");
    char temp = '1';
    while (temp != '0')
    {
        scanf("%d,%d,%d",&year,&month,&day);
        scanf("%c",&temp);
        CaculateWeekDay(year,month,day);
        printf("输入0退出,其他继续:");
        scanf("%c",&temp);
    }
}

运行效果:
请输入日期:
格式为:1900,1,1
2008,4,29
星期二
输入0退出,其他继续:d
2008,1,1
星期二
输入0退出,其他继续:l
2008,8,8
星期五
输入0退出,其他继续:0
请按任意键继续. . .

(根据网络资料整理)

出处:

TAG标签: www.301.net
版权声明:本文由www.301.net发布于世界历史,转载请注明出处:根据日期推算星期和历法由来,在现行公历中被