给出年月日,计算星期几--算法及算法来历

合集下载

小学趣味数学——根据年、月、日推算是星期几的公式

小学趣味数学——根据年、月、日推算是星期几的公式

小学趣味数学——根据年、月、日推算是星期几的公式 有时候,想知道公元某年某月某日是星期几,可以用下面的公式算出来:这里的方括号表示只取商的整数部分。

式中:x :这一年是公元多少年。

y :这一天是这一年的第几天。

s :星期几。

不过要先除以7,再取余数。

没有余数是星期日,余数是1、2、3、4、5、6,分别是星期一、星期二、星期三、星期四、星期五、星期六。

比如,2010年国庆节(10月1日)是星期几?x =2010。

y =31+28+31+30+31+30+31+31+30+1=31×5+30×3+28+1=274。

s =2010-1+502-20+5+274=2770,2770÷7余5。

所以,2010年国庆节是星期五。

y x x x x s +⎥⎦⎤⎢⎣⎡-+⎥⎦⎤⎢⎣⎡--⎥⎦⎤⎢⎣⎡-+-=40011001411如果,你只想知道这个公式怎样用,到这儿就可以了。

而要想知道这个公式的道理是什么,那可就说来话长了。

“星期制”是公元321年3月7日,古罗马皇帝君士坦丁宣布开始实行的,并且规定这一天为星期一。

实际上,就是把公元元年元旦(公元1年1月1日)规定为星期一。

(相当于公式中的x=1,y=1,所以s=1。

)通常1年有365天,365÷7=52……1,就是说比52个星期多1天。

所以,同一个日期,下一年是星期几,就要比上一年向后推1天。

比如,上一年元旦是星期三,下一年元旦就是星期四。

“通常每过1年,把同一日期是星期几向后推1天”,是理解这个公式的关键。

要想知道某年某月某日是星期几,首先,要知道这一年元旦以公元元年元旦是星期一为起点,已经把星期几向后推了多少天,还要知道这一天是这一年的第几天。

而要知道这一年元旦已经把星期几向后推了多少天,可以从公元元年到这一年已经过了多少年算起,先按1年向后推1天计算,再根据闰年的规定进行调整。

闰年的规定是:年份是4的倍数的一般都是闰年,其中,年份是整百数的一般不是闰年,只有年份是400的倍数的才是闰年。

三年级数学年月日之星期计算

三年级数学年月日之星期计算
(2+31+30+31-21)÷7=10余3,因为是未来,顺推得6月7日是星期五。
【第一个31指开始的5月总天数,30和第二个31指的是中间的6月和7月总天数】
星期计算例子
【同一月】2019年5月21日是星期二,那么5月3日是星期几?5月31日是星期几?
(21-3)÷7=2余4,因为是过去,逆推得5月3日是星期五;
(31-21)÷7=1余3,因为是未来,顺推得5月31日是星期五。
【跨一月】2019年5月21日是星期二,那么4月28日星期几6月7日是星期几
(21+30-28)÷7=3余2,因为是过去,逆推得4月28日是星期日;【30指开始的4月总天数】
(7+31-21)÷7=2余3,因为是未来,顺推得6月7日是星期五。【31指开始的5月总天数】
【跨多月】2019年5月21日是星期二,那么3月18日星期几?8月2日是星期几?
(21+31+30-18)÷7=9余1,因为是过去,逆推得3月18日是星期一;
【31指开始的3月总天数,30指中间的4月总天数】
三年级数学年月日之星期计算
星期计算:【跨多月不多见,但注意中间月份可以有多个】
第一步计算
第二步计算同一月:(后面日期-开始日源自)÷7①看余数,余数是几就推几
②算的是过去,用逆推
算的是未来,用顺推
跨一月:(后面日期+开始月份总天数-开始日期)÷7
跨多月:
(后面日期+开始月份总天数+中间月份总天数-开始日期)÷7

星期计算公式

星期计算公式

星期计算公式星期是我们日常生活中常用的时间单位之一,我们经常会用到星期来安排工作、学习和休息时间。

在日常生活中,我们经常会遇到一些需要计算星期的情况,比如计算某一天是星期几,或者计算某一天之后的几天是星期几。

为了更方便地进行星期的计算,我们可以使用一些简单的公式来帮助我们快速准确地计算出星期。

首先,我们需要明确一点,那就是一周有七天,从星期一到星期日分别为1到7,我们可以用这个数字来表示每一天所对应的星期。

接下来,我们来介绍一些常用的星期计算公式。

1. 计算某一天是星期几。

要计算某一天是星期几,我们可以使用蔡勒公式。

蔡勒公式是一种用于计算日期对应的星期的公式,它的计算方法如下:W = (C/4 2C + Y + Y/4 + 13(M+1)/5 + d) % 7。

其中,W表示星期几,C表示年份的前两位数,Y表示年份的后两位数,M表示月份(3月为1,4月为2,依此类推,其中1月和2月视为上一年的13月和14月),d表示日期。

%表示取余运算符。

例如,我们要计算2022年10月1日是星期几,那么根据蔡勒公式,我们可以将年份和月份代入公式中,然后计算出W的值,最后根据W的值来确定这一天是星期几。

2. 计算某一天之后的几天是星期几。

如果我们想要计算某一天之后的几天是星期几,我们可以先计算出这一天对应的星期,然后根据需要计算的天数来确定新的星期。

比如,如果我们知道某一天是星期一,然后想要计算这一天之后的10天是星期几,那么我们可以先确定这一天是星期一,然后再加上10天,最后根据加上天数后的结果来确定新的星期。

3. 计算某一天之前的几天是星期几。

如果我们想要计算某一天之前的几天是星期几,我们可以先计算出这一天对应的星期,然后根据需要计算的天数来确定新的星期。

比如,如果我们知道某一天是星期五,然后想要计算这一天之前的15天是星期几,那么我们可以先确定这一天是星期五,然后再减去15天,最后根据减去天数后的结果来确定新的星期。

知道公历日期计算星期

知道公历日期计算星期

知道公历日期计算星期:
黄远珦
随便给一个日期,就可以推算出是星期几。

计算方法如下:模拟数除以7的余数就是星期数(星期几) 模拟数= [世纪/4] - 2乘以世纪+ 年份+ [年份除以4] + [13 乘以(月份+1) / 5] + 当月天数- 1 可以用公示来表示; Q = [S/4] - 2S + N + [N/4] + [13 * (y+1) / 5] + t - 1 公式中的符号含义如下: Q:星期;(Q对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六)S:世纪(前两位数)N:年(后两位数)y:月(y大于等于3,小于等于14,即在本公式中,某年的1、2月要看作上一年的13、14月来计算,比如2018年1月1日要看作2017年的13月1日来计算)t:日[ ]代表取整,即只要整数部分。

C语言根据日期(年,月,日)判断星期几(使用基姆拉尔森计算公式)

C语言根据日期(年,月,日)判断星期几(使用基姆拉尔森计算公式)

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⽇为星期⼀程序如下:/*利⽤基姆拉尔森计算⽇期公式 w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)*/#include <stdio.h>const char * getWeekdayByYearday(int iY, int iM, int iD){int iWeekDay = -1;if (1 == iM || 2 == iM){iM += 12;iY--;}iWeekDay = (iD + 1 + 2 * iM + 3 * (iM + 1) / 5 + iY + iY / 4 - iY / 100 + iY / 400) % 7;switch(iWeekDay){case0 : return"Sunday"; break;case1 : return"Monday"; break;case2 : return"Tuesday"; break;case3 : return"Wednesday"; break;case4 : return"Thursday"; break;case5 : return"Friday"; break;case6 : return"Saturday"; break;default : return NULL; break;}return NULL;}int main(){int year,month,day;char ch='1';while(ch != '\033'){printf("\n请输⼊⽇期:\n格式为:1900,1,1\n");scanf("%d,%d,%d",&year,&month,&day);const char * p = getWeekdayByYearday(year, month, day);printf("WeekDay : %s\n", p);ch = getchar();printf("\n");}}运⾏效果:$ ./getweekdaybyday请输⼊⽇期:格式为:1900,1,12008,4,29WeekDay : Tuesday请输⼊⽇期:格式为:1900,1,12015,2,4WeekDay : Wednesday请输⼊⽇期:格式为:1900,1,1编者注:⽤来算现在真实⽇期的星期是没有问题的。

根据公历日期计算星期的公式

根据公历日期计算星期的公式

根据公历日期计算星期的公式蔡勒(Zeller)公式:是一个计算星期的公式,随便给一个日期,就能用这个公式推算出是星期几。

公式如下:W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1公式中的符号含义如下:w:星期;(w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六)c:世纪(前两位数)y:年(后两位数)m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)d:日[ ]代表取整,即只要整数部分。

下面以中华人民共和国成立100周年纪念日那天(2049年10月1日)来计算是星期几,过程如下: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周年国庆)是星期五。

再比如计算2006年4月4日,过程如下:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1=6+[6/4]+[20/4]-2*20+[26*(4+1)/10]+4-1=-12 (除以7余2,注意对负数的取模运算!)不过,以上的公式都只适合于1582年(我国明朝万历十年)10月15日之后的情形。

罗马教皇格里高利十三世在1582年组织了一批天文学家,根据哥白尼日心说计算出来的数据,对儒略历作了修改。

将1582年10月5日到14日之间的10天宣布撤销,继10月4日之后为10月15日。

后来人们将这一新的历法称为“格里高利历”,也就是今天世界上所通用的历法,简称格里历或公历。

若要计算1582年10月4日及之前的日期是星期几,则公式为:y+[y/4]+[c/4]-2c+[26(m+1)/10]+d+3。

四种周几推算法

四种周几推算法

四种周几(星期几)推算法孙致平编辑一、周数法(主要用周数推算,最易理解的法)举例说明。

题:算2019年10月1日周几。

解:该日公元总天数=》离该日当年且小于当年的闰年数/4*1461+平年数*365+零天数=》2016/4*1461+2*365+273=》737347, 737347/7=》105335周(星期)余2天(737347-105335*7=2)。

答:该日是周二。

二、代码法(主要用月代码推算,适合推算近期的)公式:(日期数+月代码)/4,余几(余0表示周日)就是周几。

月代码:某月最后一天是周几,就是其下月的代码。

例如,2018年12月31日是周一,那么,2019年1月的代码就是1。

例题:算2019年1月31日周几。

解:因为该1月的代码是1,所以,(31+1)/7)=>余4。

答:该日周四。

很容易就推出一年12个月的代码(2019年是144725736146),把它记住了,很快就可算出该年某日是周几。

三、三码法(主要用年月日三码推算,适用年份有限)适用2000年至2099年公式:(日码+月码+年码)/7=》余几,余几就是周几,余0就是周日。

适用1901年至1999年公式:(日码+月码+年码)/7=》余几+1,余几+1的和就是周几,其和是0就是周日。

日码:需要推算的日期数。

月码:闰年512503514624,平年622503514624。

年码:(年后两位/4+年后两位)/7=》余数(年码)。

注:(年后两位)/4取整,后两位数小于4取0。

例1、2000年3月25日周几?解:年码=》(0/4+0)/7=》余0。

故(25+2+0)/7=》余6。

答:该日周六。

例2、2020年2月29日周几?解:年码=》(20/4+20)/7=》余4。

故(29+1+4)/7=》余6。

答:该日周六。

例3、1903年4月27日周几?解:年码=》(3/4+3)/7=》余3。

故(27+5+3)/7=》余0+1=1。

答:该日周一。

三年级数学根据年、月、日推算是星期几的公式

三年级数学根据年、月、日推算是星期几的公式

三年级数学根据年、月、日推算是星期几的公式 有时候,想知道公元某年某月某日是星期几,可以用下面的公式算出来:这里的方括号表示只取商的整数部分。

式中:x :这一年是公元多少年。

y :这一天是这一年的第几天。

s :星期几。

不过要先除以7,再取余数。

没有余数是星期日,余数是1、2、3、4、5、6,分别是星期一、星期二、星期三、星期四、星期五、星期六。

比如,2010年国庆节(10月1日)是星期几?x =2010。

y =31+28+31+30+31+30+31+31+30+1=31×5+30×3+28+1=274。

s =2010-1+502-20+5+274=2770,2770÷7余5。

所以,2010年国庆节是星期五。

如果,你只想知道这个公式怎样用,到这儿就可以了。

而要想知道这个公式的道理是什么,那可就说来话长了。

y x x x x s +⎥⎦⎤⎢⎣⎡-+⎥⎦⎤⎢⎣⎡--⎥⎦⎤⎢⎣⎡-+-=40011001411“星期制”是公元321年3月7日,古罗马皇帝君士坦丁宣布开始实行的,并且规定这一天为星期一。

实际上,就是把公元元年元旦(公元1年1月1日)规定为星期一。

(相当于公式中的x =1,y =1,所以s =1。

)通常1年有365天,365÷7=52……1,就是说比52个星期多1天。

所以,同一个日期,下一年是星期几,就要比上一年向后推1天。

比如,上一年元旦是星期三,下一年元旦就是星期四。

“通常每过1年,把同一日期是星期几向后推1天”,是理解这个公式的关键。

要想知道某年某月某日是星期几,首先,要知道这一年元旦以公元元年元旦是星期一为起点,已经把星期几向后推了多少天,还要知道这一天是这一年的第几天。

而要知道这一年元旦已经把星期几向后推了多少天,可以从公元元年到这一年已经过了多少年算起,先按1年向后推1天计算,再根据闰年的规定进行调整。

闰年的规定是:年份是4的倍数的一般都是闰年,其中,年份是整百数的一般不是闰年,只有年份是400的倍数的才是闰年。

根据年月日计算出该日为星期几的方法:

根据年月日计算出该日为星期几的方法:

根据年月日计算出该日为星期几的方法:根据年月日计算出该日为星期几的方法:一、修正数概念的引入:若X日为星期M,Y日为星期N (N&gt;M),则称d=N—M为修正数。

则可得,若知道X日为星期M,又知道X日Y日之间的d,则可计算出N,从而N的大小,在这里,修正数0≦d≦6,含有修正数的运算,最后结果一律取原结果被7除所得余数。

二、修正数基本原理:若a0与a1之间的修正数为d1,a1与a2之间为d2,an-1与an之间为dn则易得a0与an之间的修正数d=d1+d2+……+dn三、由某月某日是星期几推知该月其他日期为星期几例如,已知1990年1月1日为星期一,则易得2日的d为1,3日的d为2……由于d以7为周期循环,所以8日为0,9日为1……,由此可推出每月31个日期的修正数表一日期123 4 5 6 78 910111213141516171819202122232425262728293031修正数d 012456则对于1990年1月任一日,星期N=d(日)+1四、由某月某日是星期几推知该年其他月份同一日为星期几例如已知1990年1月1日为星期一,由上表可得1月31日为星期三,可的2月1日为星期四,则二月的修正数为4-1=3,用同样的方法可知其他月份的修正数表二:每月修正数(不考虑闰年)月份12356789101112修正数03 3 6 14 6 25 0 3 5由表一表二这对于1990年任一日,可得星期M=d(月)+d(日)+1对于闰年,由于其二月比平年多一日所以三月以后修正数有所改变,将在下一节进行介绍。

五、由某年某月某日为星期几推知该世纪其他年份同月同日为星期几平年的365天,为52星期加一天,因此平年的第二年(假设也是平年)里的某一天,星期数总是比第一个平年的同一天往后推一天。

则后一年的修正数为1,后两年修正数为2(不考虑闰年),由此类推。

若考虑闰年,即该年后一年为闰年,由于2月多一日,则三月以后修正数全部加1,考虑到制表的方便,在这里,,该闰年的修正数加1,三至十二月修正数不变,一至二月修正数减1,可得如下两表年份00010204050607080910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596062636465666768697071727374757677787980818284858687888990919293949596979899修正数d 012356(括号中为闰年)月份12345679101112修正数0(6)3(2)361462535由表一、三、四可得该世纪中任一日为星期M=d(年)+d (月)+d(日)+1六、由某世纪某日推知其他世纪同年同月同日为星期几例如,已知1990年1月1日为星期一,求2090年1月1日为星期几。

怎样快速根据日期推算星期

怎样快速根据日期推算星期

怎样快速根据日期推算星期方法一: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=3535是7的倍数,所以2010年4月25日是星期日再比如算一下2010年10月1日日期代码1月份代码6年份代码5日期代码+月份代码+年份代码=1+6+5=1212除以7余5,所以2010年10月1日是星期五如果得到的代码和是小于7的数,那么此数直接是星期数如果得到的代码和是大于7的数,那么将该数除以7得到的余数为星期数。

原理:蔡勒公式W=[C/4]-2C+y+[y/4]+[26(m+1)/10]+d-1 (其中[ ]为取整符号)∙其中,W是所求日期的星期数.如果求得的数大于7,可以减去7的倍数,直到余数小于7为止.c是公元年份的前两位数字,y是已知公元年份的后两位数字;m是月数,d是日数.方括[ ]表示只截取该数的整数部分。

∙还有一个特别要注意的地方:所求的月份如果是1月或2月,则应视为前一年的13月或14月.所以公式中m 的取值范围不是1-12,而是3-14.∙大家读懂后,我给出一些历史时期,以便读者进行验算.(1).美国总统林肯遇刺,1865年4月14日,星期5;(2).美国独立纪念日,1776年7月4日,星期日;(3).日本偷袭珍珠港,1941年1941年12月7日;∙最后还有一点,工元1582年罗马教皇曾经下令修改历法,把这一年的10月4日(星期4)的下一天改为10月15日.所以在1582年以前的日子,不能加以套用.冬日夜冷继续闲读,近日看了本《古代文化常识百话》,其中有篇是关于公历年份是如何换算成农年的干支纪年的,蛮有意思的,特记之。

日期求星期的算法及闰年来历

日期求星期的算法及闰年来历

日期算法/*星期计算公式(年+年/4+年/400-年/100-年基数+月基数+日)/7=……余星期几注:式中分数均取整年基数:平年1,闰年2,月基数:1、平年:一月0, 二月3, 三月3, 四月6, 五月1, 六月4,七月0, 八月3, 九月5, 十月0, 十一月3, 十二月5.2、闰年:一月0, 二月3, 三月4, 四月0, 五月2, 六月5,七月0, 八月3, 九月6, 十月1, 十一月4, 十二月6.如:1949年10月1日是星期几?(1949+1949/4+1949/400-1949/100-1+0+1)/7=(1949+487+4-19-1+0+1)/7=345 (6)即该日为星期六。

增加几个函数,用于计算星期*/闰年的判断方法:整百的年份,能被4整除但不能被400整除的,不是闰年。

也就是说2000年是闰年,1900年、2100年等不是闰年。

地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年(tropical year)。

公历的平年只有365日,比回归年短约0.2422 日,所余下的时间约为四年累计一天,故四年于2月加1天,使当年的历年长度为366日,这一年就为闰年。

现行公历中每400年有97个闰年。

按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样经过四百年就会多算出大约3天来,因此,每四百年中要减少三个闰年。

所以规定,公历年份是整百数的,必须是400的倍数的才是闰年,不是400的倍数的,虽然是4的倍数,也是平年,这就是通常所说的:四年一闰,百年不闰,四百年再闰。

例如,2000年是闰年,1900年则是平年。

整百的年份,能被4整除但不能被400整除的,不是闰年。

也就是说2000年是闰年,1900年、2100年等不是闰年。

地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年(tropical year)。

公历的平年只有365日,比回归年短约0.2422 日,所余下的时间约为四年累计一天,故四年于2月加1天,使当年的历年长度为366日,这一年就为闰年。

根据年月日巧算星期几

根据年月日巧算星期几

根据年月日巧算星期几蒲纺二小乐志超王宝山亲爱的读者,如果给你年月日的具体数据,你能很快推算出这一天是星期几吗?笔者在辅导学生数学活动的时候,发现了一个有趣的规律。

现整理出来,供广大数学爱好者参考。

首先说说三个小常识:一、公元元年的元月一日是星期一;二、公元年分平年和闰年,平年每年有365天,闰年每年有366天。

闰年里多出一天放在二月份。

三、根据地球绕太阳转的运行规律,历法学家们规定年份数是4的倍数这一年就是闰年。

但世纪年份数必须是400的倍数的这一年才是闰年。

其他的年份都是平年。

由常识二,我们可以推算出一平年有52星期多一天,一闰年有52星期多两天。

这就可以证明某平年的元旦是星期几,当年的12月31日也一定是星期几。

下一年无论是平年还是闰年,元旦这一天一定是星期几(几+1)。

某闰年的元旦是星期几,当年的12月31日一定是星期(几+1),下一年元旦这天一定是(几+2)。

根据这个结论再联想到常识一和常识三,我们就可以着手计算任意年份的元旦是星期几了。

设已知的年份数为a,把这a年全部按照平年来计算。

因为一平年是52个星期多一天,a年就会多a天。

在a年中,是4的倍数的年份数有[a÷4]个;(这里的[a÷4]表示4除a的整数商,类似的意思相同),是世纪年的年份数有[a÷100]个;是400的倍数的年份数有[a ÷400]个。

如果公元a年是平年,那么从公元元年元月1日到公元a 年的元月1日,一共经过了52(a-1)个星期还多(a+[a÷4]-[a÷100]+[a÷400])天。

如果公元a年是闰年,那么从公元元年的元月1日到公元a年的元月1日,一共经过了52(a-1)个星期还多(a-1+[a ÷4]-[a÷100]+[a÷400])天。

为什么这里会出现“a-1”天呢?这是因为闰年里多出的一天加到二月份,是2月29日这一天,而公元a 年(闰年)的元月1日还没有经过这一天,所以在计算闰年时要减去一天,用“a-1”表示。

某年某月某日星期几的计算方法

某年某月某日星期几的计算方法

某年某月某日星期几的计算方法首先确定公历(阳歷)12个月,每个月的代码数即:每个月号前一天是星期几,本月代码数就是几,如果是星期天,代码数就是0。

那个月几号是星期几?就把几号加上本月代码数后被7除,餘几就是星期几,除尽就是星期天。

如:2006年从1月---12月以次代码数为:6、2、2、5、0、3、5、1、4、6、2、4。

如果计算10月1日星期几?就把1号加上10月代码6等於7,能被7除尽,10月1日就是星期天。

再如:7月21日星期几?就把21加上7月代码数5等於26,被7除后餘5,7月21日就是星期五(因为21本身就能被7除尽,就不用再加代码数了,代码数是几就是星期几)。

注:如果要计算下一年每月代码数,可在上一年每月代码数上加1即可。

阳歷一年中大月为31天,小月为30天,平月(2月)为28天,闰月年为29天。

闰月年就是,年数能被4除尽的为闰月年,闰月年就要在2月加1天(2月变成29天)。

闰月年每月的代码数除1月、2月在上一年同月代码数上加1外,其他月份都在上年同月代码数上加2即可;闰月年的下一年每月的代码数除1月、2月在上一年同月代码数上加2外,其他月份在上年同月代码数上加1即可。

想知道某年某月某日星期几的计算方法?年份代码数代码0123456公历年份1923(1924)192519261927(1928)192919301931(1932)1933 19341935(1936)193719381939(1940)194119421943(1944)194519461947(1948)194919501951(1952)195319541955(1956)195719581959(1960)196119621963(1964)196519661967(1968)196919701971(1972)197319741975(1976)197719781979(1980)198119821983(1984)198519861987(1988)198919901991(1992)199319941995(1996)199719981999(2000)200120022003(2004)200520062007(2008)200920102011(2012)2013201420152016201720182019(2020)202120222023月份代码数代码(6)0(2)33614上半年月份1月2月3月4月5月6月代码625035下半年月份7月8月9月10月11月12月日期代码数代码1234560 1234567日期8910111213141516171819202122232425262728293031注:你要想查某年、某月、某日、星期几?如查:(1)、1949年10月1日星期几?1、先查1949年代码数为5;2、再查10月代码数为0;3、后查1日代码数为1。

星期的计算公式范文

星期的计算公式范文

星期的计算公式范文
1.按照日历周历法计算星期:
日历周历法是最常用的日期计算方法,以一周七天为周期,星期一为
起始点。

按照这种方法,星期的计算公式为:
星期=(日期的天数-1)÷7+1
其中,日期的天数是指从年的1月1日开始计算,到指定日期的天数。

例如,计算2024年5月15日是星期几:
所以,2024年5月15日是星期二
2.按照ISO周历法计算星期:
ISO周历法是按照国际标准化组织(ISO)制定的一种日期计算方法,以一周七天为周期,星期一为起始点。

按照这种方法,星期的计算公式为:星期=(日期的天数-星期减数)÷7+1
其中,星期减数是指离最接近的星期一的天数。

通常,星期减数为3
或4、如果星期减数为3,那么星期减数就是指距离最近的上一个星期一
的天数;如果星期减数为4,那么星期减数就是指距离最近的上一个星期
四的天数。

例如,计算2024年5月15日是星期几:
星期减数=3
所以,2024年5月15日是星期日。

需要注意的是,不同地区可能采用不同的计算方法来确定星期,所以上述公式仅适用于按照日历周历法或ISO周历法计算星期的情况。

总结起来,计算星期的公式可以分为按照日历周历法计算和按照ISO 周历法计算两种方式,根据具体的需求和地区的习惯来选择适合的公式。

给出年月日计算星期几

给出年月日计算星期几
D = [ 13 * (5+1) / 5 ] - 7 + (5-1) * 28 + 1 + 1
= 122,
这正是5月1日在2004年的累积天数。
假如,我们再变通一下,把1月和2月当成是上一年的“13月”和“14月”,不仅仍然符合这个公式,而且因为这样一来,闰日成了上一“年”(一共有14个月)的最后一天,成了d的一部分,于是平闰年的影响也去掉了,公式就简化成:
= 2002 + 500 - 20 + 5 + 36 + 1
= 2524;
2524 / 7 = 360……4.这和实际是一致的。
公式(5)已经是从年、月、日来算星期几的公式了,但它还不是最简练的,对于年份的处理还有改进的方法。我们先来用这个公式算出每个世纪第一年3月1日的星期,列表如下:
年份: 1(401,801,…,2001) 101(501,901,…,2101)
显然,W这么大的原因是因为公式中的第一项(Y-1)*365太大了。其实,
(Y-1)*365 = (Y-1) * (364+1)
= (Y-1) * (7*52+1)
= 52 * (Y-1) * 7 + (Y-1),
这个结果的第一项是一个7的倍数,除以7余数为0,因此(Y-1)*365除以7的余数其实就等于Y-1除以7的余数。这个关系可以表示为:
【转】给出年月日,计算星期几--算法及算法来历最常见的公式:
W = [Y-1] + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D
Y是年份数,D是这一天在这一年中的累积天数,也就是这一天在这一年中是第几天。

根据日期知道当天是星期几的手动计算方法

根据日期知道当天是星期几的手动计算方法

公式中的符号含义如下,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。
这篇文章主要给大家介绍了关于sqlserver利用spspaceused如何查看表记录存在不准确情况的相关资料文中通过示例代码介绍的非常详细对大家学习或者使用sqlserver具有一定的参考学习价值需要的朋友们下面来一起学习学习吧
根据日期知道当天是星期几的手=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1

一个计算星期几的简单程序

一个计算星期几的简单程序

一个计算星期几的简单程序一个计算星期几的简单程序2006年09月03日星期日 16:06通常我们只知道生活当天的前后几天是星期几,即便是翻日历,也只能知道有限日期的星期数。

那么有没有一种方法可以让我们知道任何一天是星期几呢?有,下面我将向大家介绍一种方法,用以编写万年历的程序。

首先我们必须约定一些法则,我们用Y、M、D分别表示年、月、日,用数字0-6分别表示星期日-星期六,这样我们就可以开始推导我们的公式了。

我们知道2002年9月1号为星期日,如果我们要想知道2002年9月10号为星期几,可以这样算:(0+(10-1))%7=(0+9)%7=2,即星期二。

同样可算得2002年9月20号为:(0+(20-1))%7=(0+19)%7=5,即星期五。

但是这样算需要把日期减1,不太方便,为了解决这个问题,我们可以假设每个月有一个0号,由于2002年9月1号为星期日,那么2002年9月0号为星期六,这样算9月10号,只需代入10既(6+10)%7=2。

事实上,9月0号也就是8月31号,每个月0号的星期数实际上就是每个月1号的前一天的星期数。

我把这个星期数称之为每个月的代码。

有了这个代码,要算这个月任一天的星期数都好办了。

以上讨论的是一年中每个月的代码,事实上对于每年也有一个代码,这个代码就是每年1月0号(即1月1号的前一天)的星期数,也就是一月份的代码。

如果我们能够找到每年的代码之间的关系,那么要计算万年历就易如反掌了。

(一)推算年的代码公式我们都知道,平年一年有365天,即52周多1天。

闰年为366天即52周多2天。

我们先只考虑平年的情况。

假设第N年的代码为W,则第N+1年的代码为(W+1)%7,而第N+K年的代码则为(W+K)%7。

这是因为从第N年到第N+K年共经过了K年,每过一年也就是过了52周余1天,经过K年也就是过了52*K周余K天,将多余的天数K加上第N年的代码W再对7取模,所得也就是第N+K年的代码了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
= 2002 + 500 - 20 + 5 + 36 + 1
= 2524;
2524 / 7 = 360……4.这和实际是一致的。
公式(5)已经是从年、月、日来算星期几的公式了,但它还不是最简练的,对于年份的处理还有改进的方法。我们先来用这个公式算出每个世纪第一年3月1日的星期,列表如下:
因为其中的-7和(M-1)*28两项都可以被7整除,所以去掉这两项,W除以7的余数不变,公式变成:
W = (Y-1) + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + [ 13 * (M+1) / 5 ] + d.
(5)
D = [ 13 * (M+1) / 5 ] - 7 + (M-1) * 28 + d. (3≤M≤14) (4)
上面计算星期几的公式,也就可以进一步简化成:
W = (Y-1) + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + [ 13 * (M+1) / 5 ] - 7 + (M-1) * 28 + d.
(Y-1)*365 ≡ Y-1 (mod 7).
其中,≡是数论中表示同余的符号,mod 7的意思是指在用7作模数(也就是除数)的情况下≡号两边的数是同余的。因此,完全可以用(Y-1)代替(Y-1)*365,这样我们就得到了那个著名的、也是最常见到的计算星期几的公式:
W = (Y-1) + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D. (2)
显然,W这么大的原因是因为公式中的第一项(Y-1)*365太大了。其实,
(Y-1)*365 = (Y-1) * (364+1)
= (Y-1) * (7*52+1)
= 52 * (Y-1) * 7 + (Y-1),
这个结果的第一项是一个7的倍数,除以7余数为0,因此(Y-1)*365除以7的余数其实就等于Y-1除以7的余数。这个关系可以表示为:
= 731702,
731702 / 7 = 104528……6,余数为六,说明这一天是星期六。这和事实是符合的。
上面的公式(1)虽然很准确,但是计算出来的数字太大了,使用起来很不方便。仔细想想,其实这个间隔天数W的用处仅仅是为了得到它除以7之后的余数。这启发我们是不是可以简化这个W值,只要找一个和它余数相同的较小的数来代替,用数论上的术语来说,就是找一个和它同余的较小的正整数,照样可以计算出准确的星期数。
剩余天数: 3 0(1) 3 2 3 2 3 3 2 3 2 3
平年累积: 3 3 6 8 11 13 16 19 21 24 26 29
闰年累积: 3 4 7 9 12 14 17 20 22 25 27 30
仔细观察的话,我们会发现除去1月和2月,3月到7月这五个月的剩余天数值是3,2,3,2,3;8月到12月这五个月的天数值也是3,2,3,2,3,正好是一个重复。相应的累积天数中,后一月的累积天数和前一月的累积天数之差减去28就是这个重复。正是因为这种规律的存在,平年和闰年的累积天数可以用数学公式很方便地表达:
最常见的公式:
W = [Y-1] + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D
Y是年份数,D是这一天在这一年中的累积天数,也就是这一天在这一年中是第几天。
最好用的是蔡勒公式:
W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1
在日常生活中,我们常常遇到要知道某一天是星期几的问题。有时候,我们还想知道历史上某一天是星期几。通常,解决这个方法的有效办法是看日历,但是我们总不会随时随身带着日历,更不可能随时随身带着几千年的万年历。假如是想在计算机编程中计算某一天是星期几,预先把一本万年历存进去就更不现实了。这时候是不是有办法通过什么公式,从年月日推出这一天是星期几呢?
其中D是这个日子在这一年中的累积天数。算出来的W就是公元前1年(或公元0年)12月31日到这一天之间的间隔日数。把W用7除,余数是几,这一天就是星期几。比如我们来算2004年5月1日:
W = (2004-1)*365 + [(2004-1)/4] - [(2004-1)/100] + [(2004-1)/400] +31+29+31+30+1)
星期制度是一种有古老传统的制度。据说因为《圣经·创世纪》中规定上帝用了六天时间创世纪,第七天休息,所以人们也就以七天为一个周期来安排自己的工作和生活,而星期日是休息日。从实际的角度来讲,以七天为一个周期,长短也比较合适。所以尽管中国的传统工作周期是十天(比如王勃《滕王阁序》中说的“十旬休暇”,即是指官员的工作每十日为一个周期,第十日休假),但后来也采取了西方的星期制度。
年份: 1(401,801,…,2001) 101(501,901,…,2101)
--------------------------------------------------------------------
╭ d; (当M=1)
D = { 31 + d; (当M=2) (3)
╰ [ 13 * (M+1) / 5 ] - 7 + (M-1) * 28 + d + i. (当M≥3)
其中[...]仍表示只取整数部分;M和d分别是想算的日子的月份和日数;平年i=0,闰年=1。对于M≥3的表达式需要说明一下:[13*(M+1)/5]-7算出来的就是上面第二个表中的平年累积值,再加上(M-1)*28就是想算的日子的月份之前的所有月份的总天数。这是一个很巧妙的办法,利用取整运算来实现3,2,3,2,3的循环。比如,对2004年5月1日,有:
仔细想想,如果把“原点”日子的日期选为12月31日,那么第一段时间也就是一个整年,这样一来,第一段时间和第二段时间就可以合并计算,整年的总数正好相当于两个日子的年份差值减一。如果进一步把“原点”日子选为公元前1年12月31日(或者天文学家所使用的公元0年12月31日),这个整年的总数就正好是想算的日子的年份减一。这样简化之后,就只须计算两段时间:一,这么多整年的总天数;二,想算的日子是这一年的第几天。巧的是,按照公历的年月设置,这样反推回去,公元前1年12月31日正好是星期日,也就是说,这样算出来的总天数除以7的余数正好是星期几。那么现在的问题就只有一个:这么多整年里面有多少闰年。这就需要了解公历的置闰规则了。
答案是肯定的。其实我们也常常在这样做。我们先举一个简单的例子。比如,知道了2004年5月1日是星期六,那么2004年5月31日“世界无烟日”是星期几就不难推算出来。我们可以掰着指头从1日数到31日,同时数星期,最后可以数出5月31日是星期一。其实运用数学计算,可以不用掰指头。我们知道星期是七天一轮回的,所以5月1日是星期六,七天之后的5月8日也是星期六。在日期上,8-1=7,正是7的倍数。同样,5月15日、5月22日和5月29日也是星期六,它们的日期和5月1日的差值分别是14、21和28,也都是7的倍数。那么5月31日呢?31-1=30,虽然不是7的倍数,但是31除以7,余数为2,这就是说,5月31日的星期,是在5月1日的星期之后两天。星期六之后两天正是星期一。
我们知道,公历的平年是365天,闰年是366天。置闰的方法是能被4整除的年份在2月加一天,但能被100整除的不闰,能被400整除的又闰。因此,像1600、2000、2400年都是闰年,而1700、1800、1900、2100年都是平年。公元前1年,按公历也是闰年。
因此,对于从公元前1年(或公元0年)12月31日到某一日子的年份Y之间的所有整年中的闰年数,就等于
当然,要注意1月和2月已经被当成了上一年的13月和14月,因此在计算1月和2月的日子的星期时,除了M要按13或14算,年份Y也要减一。比如,2004年1月1日是星期四,用这个公式来算,有:
W = (2003-1) + [(2003-1)/4] - [(2003-1)/100] + [(2003-1)/400] + [13*(13+1)/5] + 1
这个简单的计算告诉我们计算星期的一个基本思路:首先,先要知道在想算的日子之前的一个确定的日子是星期几,拿这一天做为推算的标准,也就是相当于一个计算的“原点”。其次,知道想算的日子和这个确定的日子之间相差多少天,用7除这个日期的差值,余数就表示想算的日子的星期在确定的日子的星期之后多少天。如果余数是0,就表示这两天的星期相同。显然,如果把这个作为“原点”的日子选为星期日,那么余数正好就等于星期几,这样计算就更方便了。
C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月要按上一年的13月和14月来算,这时C和y均按上一年取值。
两个公式中的[...]均指只取计算结果的整数部分。算出来的W除以7,余数是几就是星期几。如果余数是0,则为星期日。
---------------------------------------------------------------------------
天 数: 31 28(29) 31 30 31 30 31 31 30 31 30 31
如果把这个天数都减去28(=4*7),不影响W除以7的余数值。பைடு நூலகம்样我们就得到另一张表:
月 份:1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
------------------------------------------------------------------------
相关文档
最新文档