注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

三姓学奴网志

 
 
 

日志

 
 

旧作:怎样在儒略历和公历之间进行转换(葛民勤)  

2006-12-14 13:18:57|  分类: 其他科普 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
  前面两篇文章,分别介绍了公历日期到星期和年日干支的转换公式。但是这只对于1582年10月15日以后的日期是有效的,如果用之前的日期来算,得出的结果往往和实际不一致。

  这是因为公历是从1582年10月15日才开始执行的,之前的纪年、纪日都是儒略历的纪年、纪日。在历史上,罗马历法一共有三次重大变革。首先是公元前46年(罗马纪元708年),罗马执政官儒略·恺撒(Julius Caesar)下令从次年(公元前45年)起行用新历法。当时罗马人一直用一种很不成熟的阴阳历,为了实现这种旧历和新历之间的平稳转换,这一年多加了两个月,竟长达445天,史称“乱年”(拉丁文annus confusionus,英文the year of confusion)。和这种旧历不同,新历是纯粹的阳历,规定每四年一闰,单月31天,双月(除二月外)30天,平年的二月29天,闰年加一天,即也是30天。因为新历法的岁首比旧历提前了两个月(即以旧历11月1日为新历元旦),但是月份名称仍然使用旧历的名称,所以现在公历9-12月的英文月份名分别是September, October,
November, December,而sept-, octo-, nov-和dec-本来是拉丁文里表示“七、八、九、十”的词根。

  但是,在这种新历颁布之后,置闰一度发生失误。颁布历书的官员错误地把恺撒的“每隔三年一闰”理解为“每三年一闰”,这就促成了公元前9年,罗马皇帝奥古斯都(Octovian Augustus)下令进行罗马历法的第二次重大变革。这时候,已经多闰了三次,如下:

应闰之年 前45 前41 前37 前33 前29 前25 前21 前17 前13 前9
     前5  前1  公元4

实闰之年 前45 前42 前39 前36 前33 前30 前27 前24 前21 前18
     前15 前12 前9

因此,为了消除这个失误,奥古斯都规定,公元前9年之后的三个应闰之年,即公元前5年、前1年和公元4年,都改为平年,这件事史称“罗马失闰”。同时,因为他曾在八月取得过重大的军事胜利(一说是因为他生于八月),他又决定从次年(公元前8年)起改八月为31天,同时调整以后各月的天数,原为大月31天的九月、十一月改为小月30天,原为小月30天的十月、十二月改为大月31天,二月则再减去一天,平年28天,闰年29天。儒略历至此定型,以后一直沿用了将近一千六百年。

  但是,儒略历的一回归年长度为365.25天,比实际的365.2422天多11分14秒,积累下来,128年就差一天,400年就差三天多。到将近一千六百年后的公元1582年,已经差了十天,以致当年的春分日竟从3月21日提前到3月11日。鉴于此,当时的教皇格里高利十三世(Pope Gregory XIII)再次改革历法,下令以当年10月4日的第二天为10月15日,但星期保持连续。同时,为了避免以后再发生这种误差,改进了置闰规则,即年份能被4整除的是闰年,但对于末尾是00的年份,必须被400整除才不是闰年。这样一来,新历法一回归年的长度变为365.2425天,和实际值已经很接近,每三千多年才会差一天。这种新历法就是现在我们仍在使用的公历,也称格里高利历。

  由于公历颁布得比较晚,距今不过四百多年,之前长达近一千六百年都是用儒略历。为了方便起见,历史学界所使用的历表在1582年10月15日之后使用公历纪日,之前一律使用儒略历纪日。这样一来,除了公元前8年以前的日期需要倒推确定外,以后的史料中的日期都可以直接拿来用了。其他各国的古历,也都这样转化为儒略历或公历,以求国际上的统一。这样的纪日法,总的来说也可以统称为公历纪日。

  了解了这段历法改革的历史,我们也就可以给出儒略历和公历相互转换的公式了。因为儒略历和公历每四百年差3天,既然在儒略历1501年3月1日-1582年10月4日这一段时间内,两历的日期总共差10天,倒推回去,在儒略历200年3月1日-300年2月29日这一段时间内,两历的日期是相同的。再往前,儒略历的日期反而比公历要靠后了。这样就有:

Δd [(C-1)/4] 3.                                                 (1)

Δd是公历日期在儒略历日期之后的天数,C在大部分情况下是世纪数,[...]表示只取整数部分。对于末尾为00的年份,在3月1日和3月1日以后,C要加1,即按下个世纪算;注意,假如这段Δd跨越了2月末,2月的实际长度按转换之后的历法计算。也就是说,对于末尾为00的年份,如果是儒略历转换为公历,2月按逢四百年29天、平时28天算;如果是公历转换为儒略历,2月一律按29天算。

  比如,儒略历公元1500年2月26日,因为年份末尾是00,2月26日在3月1日之前,所以C=15,于是有:

Δd 15 [(15-1)/4] 9,

即公历日期在儒略历日期之后9天。因为这9天跨越了二月末,2月的实际长度按转换后的公历算,为28天,所以这一天的公历日期是700年3月7日。反过来,如果要问公历的1500年3月7日对应的儒略历日期是什么,因为3月7日在3月1日之后,C=16,这时

Δd 16 [(16-1)/4] 10.

这9天同样跨越了二月末,2月的实际长度按转换后的儒略历算,为29天,这样就得到相应的儒略历日期是1500年2月26日。

  公式(1)提供了对儒略历日期和公历日期的间隔日数的计算,借此就可以对两历日期进行换算。但在计算儒略历日期的星期和日干支的时候,先转换成公历再计算还是显得麻烦,为此,我们可以专门推导适用于儒略历日期的计算星期和日干支的公式,如下:

(5-C) [y/4] [13 (M+1) 5] 1;                         (2)

(5C-2) [C/4] 5y [y/4] [3 (M+1) 5] 3;                (3)

(9C-2) [C/4] 5y [y/4] [3 (M+1) 5] i(奇数月i=0,偶数
   月i=6)                                                                 (4)



4C 10 i(奇数月i=0,偶数月i=6)                                (5)

和相应的适用于公历日期的计算星期和日干支的公式相比,区别仅在于和世纪数减一有关的项不同(这里为了更好地对比,没有把常数项全部合并),其他各项都是一样的,而公式(5)则对公历日期和儒略历日期都适用。
 
2004.07.20初稿
2006.12.15略作修改
  评论这张
 
阅读(215)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017