蔡勒(Zeller)公式,是一個(gè)計(jì)算星期的公式,隨便給一個(gè)日期,就能用這個(gè)公式推算出是星期幾。
w=y+[y/4]+[c/4]-2c+[13(m+1)/5]+d-1
—— 蔡勒(Zeller)公式
符號(hào)意義如下: w:星期; w對(duì)7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六 c:世紀(jì),取值為經(jīng)歷過的世紀(jì),而不是當(dāng)前世紀(jì)。如2019年是21世紀(jì),c取值20。 y:年,取后兩位數(shù)。如2019年,y取值19 m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月來計(jì)算,比如2003年1月1日要看作2002年的13月1日來計(jì)算) d:日 [ ]代表取整,即只要整數(shù)部分。
單片機(jī)C語言代碼如下: #include <stdio.h>
unsigned char Zeller_formula(unsigned char y,unsigned char m,unsigned char d) { unsigned char c,w; c=21-1; //默認(rèn)為21世紀(jì).c表示已經(jīng)經(jīng)歷過的世紀(jì) if(m<3) { m+=12; y-=1; } w=(y+y/4+c/4-2*c+(13*(m+1)/5)+d-1)%7; if(w==0)return 7; else return w; } main() { printf("week=%d ",Zeller_formula(19,1,1)); }
|