日期格式 y-m-d,y為年份數(y>1582),m為月份數(0<m<13),d為日數(0<d<28、29、30、31)。y、m、d為整數。例如2008-8-1,各變量分別是y=2008,m=8,d=1。
1、常用公式
W = [y-1] + [(y-1)/4] - [(y-1)/100] + [(y-1)/400] + D
式中變量說明:W為星期數,y為年份數,D為該日期在該年中的排序數;[X]為對X取整,下同。
2、蔡勒(Zeller)公式
W=Y+[Y/4]+[C/4]-2C+[26(M+1)/10]+d-1
公式中的符號含義如下:
W為星期數;C為世紀;Y為年(兩位數); M為月數(M=m(當m>2);M=m+12(m<3));d為日。
相比於通用通用計算公式而言,蔡勒(Zeller)公式大大降低了計算的復雜度。
3、基姆拉爾森計算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
在公式中d表示日期中的日數,m表示月份數,y表示年份數。
註意:在公式中有個與其他公式不同的地方:
把壹月和二月看成是上壹年的十三月和十四月,例:如果是2004-1-10則換算成:2003-13-10來代入公式計算。
4、蔡勒公式壹種改進
相比於另外壹個通用通用計算公式而言,蔡勒(Zeller)公式大大降低了計算的復雜度。不過,另外有壹個似乎更加簡潔更簡單的改進公式,提出這個公式的人是馮思琮[1] [2] :
W=[y/4]+r(y/7)-2r(c/4)+m’+d
下,其他符號與蔡勒公式中含義相同。r(X)為對表達式X取余;
m’是m的修正數。
1至12月的修正數1’至12’如下:
(1’,10’)=6;
(2’,3’,11’)=2;
(4’,7’)=5;
(5’)=0;
(6’)=3;
(8’)=1;
(9’,12’)=4
特別地:在筆者給出的公式中,y為潤年時(1’)=5;(2’)=1。
-----------------------------
[註] 以上的公式都只適合於1582年10月15日之後的情形,即我國明朝萬歷十年間。羅馬教皇格裏高利十三世在1582年組織了壹批天文學家,根據哥白尼日心說計算出來的數據,對儒略歷作了修改。將1582年10月5日到14日之間的10天宣布撤銷,繼10月4日之後為10月15日。
後來人們將這壹新的歷法稱為“格裏高利歷”,也就是今天世界上所通用的歷法,簡稱格裏歷或公歷。