本文收集整理关于知道日期算星期几怎么算的相关议题,使用内容导航快速到达。
内容导航:
Q1:c语言知道日期 算星期几
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日为星期一</PRE><PRE>程序如下:
#include "stdio.h"
void CaculateWeekDay(int y,int m, int d)
{
if(m==1m==2) {
m+=12;
y--;
}
int iWeek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
switch(iWeek)
{
case 0: printf("星期一\n"); break;
case 1: printf("星期二\n"); break;
case 2: printf("星期三\n"); break;
case 3: printf("星期四\n"); break;
case 4: printf("星期五\n"); break;
case 5: printf("星期六\n"); break;
case 6: printf("星期日\n"); break;
}
}
void main()
{
int year=0,month=0,day=0;
printf("请输入日期:\n格式为:1900,1,1\n");
char temp = 1;
while (temp != 0)
{
scanf("%d,%d,%d",&year,&month,&day);
scanf("%c",&temp);
CaculateWeekDay(year,month,day);
printf("输入0退出,其他继续:");
scanf("%c",&temp);
}
}
WWW.yijita%O.coM
Q2:谁知道看日期能迅速算出是星期几的方法
首先,把你想要知道的日期号,加上该月份代号,再除以7,能整除的就是星期日;不能整除的,余数是几,那天就是星期几。如果日期号和月份代号相加的和小于7,那么这个和是几,那天就是星期几。
例如:想知道2006年5月20日是星期几,就把“20”加上2006年5月的代号“0”,所得的和是 20 ,再用20除以7,余数是6,那么2006年5月20号就是星期6。
再举个例子:想知道2006年2月3日是星期几,那么就把“3”加上2月的代号“2”,和为5。由于5小于7,所以2006年2月3日就是星期5。
由于各年的月份代号不尽相同,下面给出各年月份代号的计算方法:
首先要有一本日历,然后随便找一天,例如2006年8月5日,那天是星期6,就把“6”减去“5”,所得的差为“1”,那么2006年8月的代号就是1,其他月份代号的计算方法可以次类推。
这个方法写成公式就是:该年月份代号=该月星期几-该月日期号。
注意:式中取该月日期号时,必须小于或等于7;取星期日时,数值按7计算,该月星期几的数值要大于日期号数值。
Q3:怎样由日期推算是星期几
只需要知道三个代码
日期代码+月份代码+年份代码
就可以秒算任意年份任意日期的星期数
方法
1、日期代码指的是日期数,如3月18号,日期代码为18。4月7号,日期代码为7。
2、月份代码(需要小小记忆)
五月 是 0
八月 是 1、二月 三月 十一月 是 2、六月 是 3、九月 十二月 是4、四月 七月 是5、一月 十月 是 6、如果遇到闰年 则二月代码变为1,一月代码变为5,其它不变。即,非闰年的月份代码为622503 514624,闰年的月份代码为512503 514624。
3、年份代码
举个例子 2010年的代码,我们用尾数10除以4(忽略余数)再加上10得到数字12,再用12除以7,得到的余数5就是2010年的代码。
也就是说,心算出2000到2099任意年份的代码,只需将其后两位数X除以4(忽略余数),然后与X相加,并除以7就可以了,得到的余数就是其年份代码。10年的年份代码是5,11年年份代码为6。
4、秒算任意日期的星期数
如,我们算一下2010年4月25日
日期代码25、月份代码5、年份代码5、日期代码+月份代码+年份代码=25+5+5=35、35是7的倍数,所以2010年4月25日是星期日
再比如算一下2010年10月1日
日期代码1、月份代码6、年份代码5、日期代码+月份代码+年份代码=1+6+5=12、12除以7余5,所以2010年10月1日是星期五
如果得到的代码和是小于7的数,那么此数直接是星期数
如果得到的代码和是大于7的数,那么将该数除以7得到的余数为星期数。
方法二
原理:蔡勒公式
1、W=[C/4]-2C+y+[y/4]+[26(m+1)/10]+d-1 (其中[ ]为取整符号)
2、其中,W是所求日期的星期数.如果求得的数大于7,可以减去7的倍数,直到余数小于7为止.c是公元年份的前两位数字,y是已知公元年份的后两位数字;m是月数,d是日数.方括[ ]表示只截取该数的整数部分。
3、还有一个特别要注意的地方:所求的月份如果是1月或2月,则应视为前一年的13月或14月.所以公式中m 的取值范围不是1-12,而是3-14.
Q4:根据日期知道当天是星期几的手动计算方法
蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
公式中的符号含义如下,w:星期;c:世纪-1;y:年(两位数);m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算);d:日;[ ]代表取整,即只要整数部分。(C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月要按上一年的13月和 14月来算,这时C和y均按上一年取值。)
算出来的W除以7,余数是几就是星期几。如果余数是0,则为星期日。
以2049年10月1日(100周年国庆)为例,用蔡勒(Zeller)公式进行计算,过程如下:
蔡勒(Zeller)公式:
w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
=49+[49/4]+[20/4]-2×20+[26× (10+1)/10]+1-1
=49+[12.25]+5-40+[28.6]
=49+12+5-40+28
=54 (除以7余5)
即2049年10月1日(100周年国庆)是星期5。