1. 程式人生 > >蔡勒公式——根據年月日計算星期幾

蔡勒公式——根據年月日計算星期幾

蔡勒(Zeller)公式,是一個計算星期的公式,隨便給一個日期,就能用這個公式推算出是星期幾。

計算公式

由於羅馬教皇搞了一些騷操作,這裡給出的公式僅適用於1582年10月15日以後的星期,詳情可參考

格里高利曆

符號意義

w:星期; w對7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六

c:世紀(注:一般情況下,在公式中取值為已經過的世紀數,也就是年份除以一百的結果,而非正在進行的世紀,也就是現在常用的年份除以一百加一;不過如果年份是公元前的年份且非整百數的話,c應該等於所在世紀的編號,如公元前253年,是公元前3世紀,c就等於-3)

y:年(一般情況下是後兩位數,如果是公元前的年份且非整百數,y應該等於cMOD100+100)

m:月(m大於等於3,小於等於14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月來計算,比如2003年1月1日要看作2002年的13月1日來計算)

d:日

[ ]代表取整,即只要整數部分。

C語言程式碼

int Calculate_Week( int year , int month, int day )
{
    int c,y,week;
    if (month == 1 || month == 2)
    year--, month += 12;
    c = year / 100;
    y = year - c * 100;
    week = y + y / 4 + c / 4 - 2 * c + 26 * (month + 1) / 10 + day - 1;
    while (week < 0)
    week += 7;
    week %= 7;
    return week;
}

吐槽

返回值0代表星期日