計算具體日期星期幾

2021-09-19 15:27:18 字數 2103 閱讀 6900

時間基準 公元0年1月1日 星期日

首先計算0年1月幾號星期幾

int week;//週幾

int day; //日

week = (day-1)%7;

因為0年1月1 日 星期日 所以在求餘的時候減去1 就可以得到乙個數字 0 1 2 3 4 5 6 代表星期幾

然後考慮如何計算不同年份1月幾號星期幾(以0年1月幾號星期幾為基礎計算)

不考慮瑞年的情況下 一年有365天 由365%7=1 可以得出每一年的第一天和最後一天星期幾是相同的 同時也就是說下一年的第一天週幾要比上一年的第一天周幾多1;例如0年1月1日星期日則1年1月1日就會星期一 ,每7年為乙個迴圈,乙個週期後周幾又會相同,如果年份和7求余為零則週幾和0年1月1日周幾是相同的。例如0年1月1日和7年1月1日都是星期日。如果年份對7求餘有餘數,這個時候在這年份下1月幾號星期幾就和0年1月幾號星期幾不一樣了,如果餘數為1 0年1月星期幾加1就可以得到這個年份下1月幾號星期幾就要加1,要是餘數為 2 3 4 5 6 以此類推。

所以計算不同年份1月幾號星期幾的程式如下

int week;

int day;

int year; //年份

week = (day-1+year)%7;

如果考慮瑞年 瑞年有366天而366對7求余會得到餘數2,說明瑞年相比於平年會讓週幾往後再多移一天,計算本年份之前的瑞年的個數,如果為7的倍數則沒有影響 如果有餘數 本年份1月幾號星期幾會向後移

計算瑞年的個數 程式如下

int week;

int day;

int year;

week = (day-1 + year + (year-1)/4 - (year-1)/100 + (year+4)/400)%7;

然後再考慮怎麼計算不同年份不同月份不同日星期幾(以1月為基礎進行計算)(先不考慮瑞年)

首先先計算出其他月份和1月相比的誤差

假設每個月有只有28天 因為28%7=0  所以每個月相同的號週幾是相同的 然而現實是 並不是每個月都是28 天 所以就要找到修正資料來修正

月份       天數          累積              %7

1             31            0                 0

2            28             3                 3

3            31             3                 3

4            30             6                 6

5            31            8                  1

6            30           11                 4

7           31            13                 6

8            31           16                 2

9            30          19                 5

10          31         21                  0

11          30         24                  3

12          31       26                   5

累積:是前面的所有月份和28的差的和 

%7: 累積對於7求餘 因為當幾號加7時星期幾是不變的 真正能影響星期幾的是7的餘數 乙個月份受它前面所有月份的累積(月份天數和28的差)影響

則程式可以這樣寫

int week;

int year;

int day;

int month; //月份

int table[12] = //修正資料

week = (day-1 + year + (year-1)/4 - (year-1)/100 + (year-1)/400 + table[month-1])%7;

日期計算星期幾

日期 月份 年份 就可以秒算任意年份任意日期的星期數 方法1 日期 指的是日期數,如3月18號,日期 為18。4月7號,日期 為7。2 月份 需要小小記憶 五月 是 0 八月 是 1 二月 三月 十一月 是 2 六月 是 3 九月 十二月 是4 四月 七月 是5 一月 十月 是 6 如果遇到閏年 則...

通過具體日期計算星期幾 蔡勒公式

include using namespace std int main w對7取模得 0 星期日,1 星期一,2 星期二,3 星期三,4 星期四,5 星期五,6 星期六 int yyyy,mm,dd int w,r cout 請輸入乙個日期 yyyy年 mm月 dd日 cin yyyy mm dd...

由日期計算星期幾

c語言根據日期判斷星期幾 使用基姆拉爾森計算公式 演算法如下 基姆拉爾森計算公式 w d 2 m 3 m 1 5 y y 4 y 100 y 400 mod 7 在公式中d表示日期中的日數,m表示月份數,y表示年數。注意 在公式中有個與其他公式不同的地方 把一月和二月看成是上一年的十三月和十四月,例...