c語言根據日期判斷星期幾(使用基姆拉爾森計算公式)
演算法如下:
基姆拉爾森計算公式
w= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
在公式中d表示日期中的日數,m表示月份數,y表示年數。
注意:在公式中有個與其他公式不同的地方:
把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10則換算成:2003-13-10來代入公式計算。
以公元元年為參考,公元元年1月1日為星期一程式如下:
#include "stdio.h"
void caculateweekday(int y,int m, int d)
int iweek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
switch(iweek)
} void main()
}執行效果:
請輸入日期:
格式為:1900,1,1
2008,4,29
星期二輸入0退出,其他繼續:d
2008,1,1
星期二輸入0退出,其他繼續:l
2008,8,8
星期五輸入0退出,其他繼續:0
請按任意鍵繼續. . .
編者注:用來算現在真實日期的星期是沒有問題的。原理是根據已知公元1年1月1日的星期數來推算。如果在你的題目中約定了某天是星期幾,你要注意那天的星期是否跟真實的星期相同,如果不同,需要考慮相差幾天!
如果大家覺得不夠過癮,可以看看以下該公式的推導過程,讓大家對曆法有個更深刻的認識
日期計算星期幾
日期 月份 年份 就可以秒算任意年份任意日期的星期數 方法1 日期 指的是日期數,如3月18號,日期 為18。4月7號,日期 為7。2 月份 需要小小記憶 五月 是 0 八月 是 1 二月 三月 十一月 是 2 六月 是 3 九月 十二月 是4 四月 七月 是5 一月 十月 是 6 如果遇到閏年 則...
計算具體日期星期幾
時間基準 公元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月幾號...
根據已知日期計算星期幾
private string weekarrays param date format is 2012 9 18 return weekday private string getweekday final string date int year 0 int month 0 int day 0 t...