計算星期幾的公式

日期格式 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)公式大大降低了計算的複雜度。不過,另外有一個似乎更加簡潔更簡單的改進公式,提出這個公式的人是馮思琮:

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日。 後來人們將這一新的曆法稱為「格里高利曆」,也就是今天世界上所通用的曆法,簡稱格里曆或公曆。

推薦閱讀:

免費的計算機編程類中文書籍,github上最火,持續更新
命卦的計算
姓名字型檔——姓名用字與數理計算
1995年閏八月是怎樣計算的?
你會用「天干地支」計算年份嗎?

TAG:公式 | 計算 | 星期 |