RTC 根據年月日計算 星期 的函式

2021-08-31 09:48:24 字數 1212 閱讀 4500

一、

u8 const table_week[12]=; //月修正資料表    

u8 rtc_get_week(u16 year,u8 month,u8 day)

月修正資料表 table_week[12]=;

如果1月1日是星期一,

2月1日是星期四,4-1=3

3月1日是星期四,4-1=3

4月1日是星期日,7-1=6

依次類推。前提是這一年是平年。

yearh=year/100; yearl=year%100; 

// ------------------------如果為21世紀,年份數加100 ---------------------------

if (yearh>19)yearl+=100;  

//-----------year/4是閏年的年數,平年一年365天,365%7=1;temp2算出自2023年以來積累的多出來的天數----------

temp2=yearl+yearl/4; 

//---------------------算比2023年1月1日多出來的天數----------------------------

temp2=temp2+day+table_week[month-1];

//---------------潤年1月,2月要 -1,因為yearl/4已把當年多出來的一天計算了,三月份以後才能計算加的一天---------------------------

if (yearl%4==0&&month<3)temp2--;

//---------------------算出日期----------------------------

return(temp2%7);

二、u8 rtc_get_week(u16 year,u8 month,u8 day)

;//非閏年

static u8 leap_year[12]=;//閏年  

u8 temp2;

u8 yearl;

yearl=year0;

yearl=(yearl/4+yearl)%7;

temp2=is_leap_year(year)?leap_year[month-1]:no_leap_year[month-1]; 

return ((day+temp2+yearl)%7); }

三、u8 rtc_get_week(u16 year,u8 month,u8 day)

實現的根據年月日計算星期幾的函式

基姆拉爾森計算公式 w d 2 m 3 m 1 5 y y 4 y 100 y 400 mod 7 在公式中d表示日期中的日數,m表示月份數,y表示年數。注意 在公式中有個與其他公式不同的地方 如下 y 年,m 月,d 日期 string caculateweekday int y,int m,in...

C 實現的根據年月日計算星期幾的函式

這個是我知道最簡單的演算法了.決定值得收藏.不過方法不是我寫的,不過還是忍不住 拿出來共同分享.演算法如下 基姆拉爾森計算公式 w d 2 m 3 m 1 5 y y 4 y 100 y 400 mod 7 在公式中d表示日期中的日數,m表示月份數,y表示年數。注意 在公式中有個與其他公式不同的地方...

年月周星期計算年月日 C

輸入年 月 第幾周 週幾,輸出對應的 年 月 日。1.2.1.週日到週六 2.周一到週日 這兩種不同的定義可能會導致不同的計算結果。這裡的 放入的是第一種定義的結果,若想改為第二種,需要調整 中的b 和後續 下面所述全部以第一種定義為基礎。二 第幾周 的定義 每週的第一周和最後一周一般不完整,如上圖...