计算星期可以用蔡勒(Zeller)公式(只适合于1582年10月15日之后的情形):
w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
公式中的符号含义如下:c:世纪(年的高两位数);y:年(年的低两位数);m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2005年1月1日要看作2004年的13月1日来计算);d:日;[]代表取整,即只要整数部分。w:星期;w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
以2005年2月14日为例:c=20,y=4,m=14,d=14w=4+[4/4]+[20/4]-2*20+[26*(14+1)/10]+14-1=4+1+5-40+39+14-1=22(除以7余1)所以2005年2月14日是星期一。蔡勒(Zeller)公式之所以只适合于1582年10月15日之后的情形,原因是:罗马教皇格里高利十三世在1582年组织了一批天文学家,根据哥白尼日心说计算出来的数据,对儒略历作了修改。将1582年10月5日到14日之间的10天宣布撤销,继10月4日之后为10月15日。后来人们将这一新的历法称为“格里高利历”,也就是今天世界上所通用的历法,简称格里历或公历。-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------最常见的公式:
W=[Y-1]+[(Y-1)/4]-[(Y-1)/100]+[(Y-1)/400]+D
Y是年份数,D是这一天在这一年中的累积天数,也就是这一天在这一年中是第几天。
最好用的是蔡勒公式:
W=[C/4]-2C+y+[y/4]+[13*(M+1)/5]+d-1
C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月要按上一年的13月和14月来算,这时C和y均按上一年取值。
两个公式中的[...]均指只取计算结果的整数部分。算出来的W除以7,余数是几就是星期几。如果余数是0,则为星期日。------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------怎样在儒略历和公历之间进行转换
文/葛民勤
这是因为公历是从1582年10月15日才开始颁行的,之前的纪年、纪日都是儒略历的纪年、纪日。在历史上,罗马历法一共有三次重大变革。首先是公元前46年(罗马纪元708年),罗马执政官儒略·恺撒(JuliusCaesar)下令从次年(公元前45年)起行用新历法。当时罗马人一直用一种很不成熟的阴阳历,为了实现这种旧历和新历之间的平稳转换,这一年多加了两个月,竟长达445天,史称“乱年”(拉丁文annusconfusionus,英文theyearofconfusion)。和这种旧历不同,新历是纯粹的阳历,规定每四年一闰,单月31天,双月(除二月外)30天,平年的二月29天,闰年加一天,即也是30天。因为新历法的岁首比旧历提前了两个月(即以旧历11月1日为新历元旦),但是月份名称仍然使用旧历的名称,所以现在公历9-12月的英文月份名分别是September,October,November,December,而sept-,octo-,nov-和dec-本来是拉丁文里表示“七、八、九、十”的词根。
但是,在这种新历颁布之后,置闰一度发生失误。颁布历书的官员错误地把恺撒的“每隔三年一闰”理解为“每三年一闰”,这就促成了公元前9年,罗马皇帝奥古斯都(OctovianAugustus)下令进行罗马历法的第二次重大变革。这时候,已经多闰了三次,如下:
应闰之年前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日。鉴于此,当时的教皇格里高利十三世(PopeGregoryXIII)再次改革历法,下令以当年10月4日的第二天为10月15日,但星期保持连续。同时,为了避免以后再发生这种误差,改进了置闰规则,即年份能被4整除的是闰年,但对于末尾是00的年份,必须被400整除才不是闰年。这样一来,新历法一回归年的长度变为365.2425天,和实际值已经很接近,每三千多年才会差一天。这种新历法就是现在我们仍在使用的公历,也称格里高利历。
由于公历颁布得比较晚,距今不过四百多年,之前长达近一千六百年都是用儒略历。为了方便起见,历史学界所使用的历表在1582年10月15日之后使用公历纪日,之前一律使用儒略历纪日。这样一来,除了公元前8年以前的日期需要倒推确定外,以后的史料中的日期都可以直接拿来用了。其他各国的古历,也都这样转化为儒略历或公历,以求国际上的统一。这样的纪日法,总的来说也可以统称为公历纪日。
Δd=C-[(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]-3=9,
即公历日期在儒略历日期之后9天。因为这9天跨越了二月末,2月的实际长度按转换后的公历算,为28天,所以这一天的公历日期是700年3月7日。反过来,如果要问公历的1500年3月7日对应的儒略历日期是什么,因为3月7日在3月1日之后,C=16,这时
Δd=16-[(16-1)/4]-3=10.
这9天同样跨越了二月末,2月的实际长度按转换后的儒略历算,为29天,这样就得到相应的儒略历日期是1500年2月26日。
公式(1)提供了对儒略历日期和公历日期的间隔日数的计算,借此就可以对两历日期进行换算。但在计算儒略历日期的星期和日干支的时候,先转换成公历再计算还是显得麻烦,为此,我们可以专门推导适用于儒略历日期的计算星期和日干支的公式,如下:
W=(5-C)+y+[y/4]+[13*(M+1)/5]+d-1;(2)
g=(5C-2)+[C/4]+5y+[y/4]+[3*(M+1)/5]+d-3;(3)
z=(9C-2)+[C/4]+5y+[y/4]+[3*(M+1)/5]+d+7+i(奇数月i=0,偶数月i=6)(4)
或
z=g+4C+10+i(奇数月i=0,偶数月i=6)(5)
和相应的适用于公历日期的计算星期和日干支的公式相比,区别仅在于和世纪数减一有关的项不同(这里为了更好地对比,没有把常数项全部合并),其他各项都是一样的,而公式(5)则对公历日期和儒略历日期都适用。