如何快速計算出星期幾

有的時候需要根據日期快速計算出星期幾來,我從網上搜索到一個口訣,驗證了幾個日期,發現還是靠譜的,這個公式的證明目前我還不會,但可以保證2000-2099的星期計算是靠譜的,其他時間我沒有驗證過。

const u8 month_code[][12]={
    {6,2,2,5,0,3,5,1,4,6,2,4},
    {5,1,2,5,0,3,5,1,4,6,2,4},
};

int calc_week(u8 nian,u8 yue,u8 ri)
{
	u8 isloop;
	u8 yc,mc,week;

	isloop=((nian&3)!=0)?0:1;

	yc=(nian/4+nian)%7;

	mc=month_code[isloop][yue-1];  //這裏的閏年只是簡單判斷

	week=(yc+mc+ri)%7;

	return week;
}

簡單驗證下,2002-3-31是星期日,2020-2-28是星期五,2099-2-28是星期六,2032-7-28是星期三,... ...


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章