星期几的速算方法
- 格式:docx
- 大小:19.44 KB
- 文档页数: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的倍数的才是闰年。
利用公式计算某一天是星期几?
如果忘了今天是星期几,怎么办?可以查看手机,因为手机带有日期功能(万年历)。
但是,手机的万年历只能查询前后几十年的时间。
如果想知道数百年前或者数百年后某一天是星期几?又该怎么办?下面介绍两种方法(公式),只需要知道具体的日期(阳历),就可以很快推导出这一天是星期几?
第一种方法(公式):
其中:[]是取整运算即截取该数的整数部分,mod是求余运算;
W:星期,0~6分别对应星期日、星期一、星期二、星期三、星期四、星期五、星期六;
c:年份的前两位数字;
y:年份的后两位数字;
m:月份(注意:3≤m≤14,即某一年的1月和2月要使用上一年的13月和14月来计算,如1989年2月6日要看作是1988年14月6日,对应的值分别是c=19,y=88,m=14,d=6);
d:日期。
如果时间是在1582年10月4日或之前,公式则为:
比如要推导2018年11月22日(c=20,y=18,m=11,d=22)
是星期几?
计算:
即2018年11月22日是星期四。
第二种方法(公式):
其中:[]是取整运算即截取该数的整数部分,mod是求余运算;
W表示星期,0~6分别对应星期日、星期一、星期二、星期三、星期四、星期五、星期六;
Y表示年份;
D表示这一天在该年中是第几天。
比如:要推导2018年11月22日是星期几?
计算:
Y=2018
D=31+28+31+30+31+30+31+31+30+31+22=326
即2018年11月22日是星期四。
根据⽇期计算出星期⼏的⼏种算法由于坑爹的DEV系统未装⾃带函数库不得不在⽹上各处寻觅算法。
⼤概有如下⼏种⽅法:⼀:常⽤公式 W = [Y-1] + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D Y是年份数,D是这⼀天在这⼀年中的累积天数,也就是这⼀天在这⼀年中是第⼏天。
⼆:蔡勒(Zeller)公式 w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 公式中的符号含义如下,w:星期;c:世纪;y:年(两位数); m:⽉(m⼤于等于3,⼩于等于14,即在蔡勒公式中,某年的1、2⽉要看作上⼀年的13、14⽉来计算,⽐如2003年1⽉1⽇要看作2002年的13⽉1⽇来计算);d:⽇;[ ]代表取整,即只要整数部分。
相⽐于通⽤通⽤计算公式⽽⾔,蔡勒(Zeller)公式⼤⼤降低了计算的复杂度。
三:对蔡勒(Zeller)公式的改进 相⽐于另外⼀个通⽤通⽤计算公式⽽⾔,蔡勒(Zeller)公式⼤⼤降低了计算的复杂度。
不过,笔者给出的通⽤计算公式似乎更加简洁(包括运算过程)。
现将公式列于其下: W=[y/4]+r (y/7)-2r(c/4)+m’+d 公式中的符号含义如下,r ( )代表取余,即只要余数部分;m’是m的修正数,现给出1⾄12⽉的修正数1’⾄12’如下:(1’,10’)=6;(2’,3’,11’)=2;(4’,7’)=5;5’=0;6’=3;8’=1;(9’,12’)=4(注意:在笔者给出的公式中,y为润年时1’=5;2’=1)。
其他符号与蔡勒(Zeller)公式中的含义相同。
四:基姆拉尔森计算公式 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来代⼊公式计算。
计算任何一个日期是星期几的方法蔡勒公式W = [C/4] - 2C + y + [y/4] + [13×(M+1) / 5] + d - 1 C是世纪数减1,y是年份后两位,M是月份(从3月开始,1月和2月要按上一年的13月和14月来算,这时C和y均按上一年取值),d是日数。
求出W的值,再除以7,余几就是星期几,余数为0,则是星期天。
注意:[...]表示只取整数部分注意:公式中如计算得出负数,不能按习惯的余数的概念求余数,只能按数论中的余数的定义求余。
为了方便计算,我们可以给它加上一个7的整数倍,使它变为一个正数,比如加上7、14、21、28等,得到一个整数后,再除以7,余几,说明这一天是星期几。
例1:2004年的9月1日是星期几?C=20 y=04 M=9 d=1W = [C/4] - 2C + y + [y/4] + [13×(M+1) / 5] + d - 1=[20/4]-2×20+04+[04/4]+[13×(9+1)/5]+1-1 =5-40+4+1+[13×2]+1-1=5-40+4+1+26+1-1=-4W为负数不行,加7的倍数14,得10。
10除以7,余数为3,2004年的9月1日是星期三。
例2:2010年的7月15日是星期几?C=20 y=10 M=7 d=15W = [C/4] - 2C + y + [y/4] + [13×(M+1) / 5] + d - 1=[20/4]-2×20+10+[10/4]+[13×(7+1)/5]+15-1 =5-40+10+2+[13×8/5]+14=-23+20+14=1111除以7余数为4,2010年的7月15日是星期四。
链接:1世纪为100年,2000年以后为21世纪,以此类推1个年代为10年,90-99为90年代,以此类推!如:1900年是19世纪、1901年是20世纪、2000年是20世纪、2001年是21世纪。
知道公历日期计算星期:
黄远珦
随便给一个日期,就可以推算出是星期几。
计算方法如下:模拟数除以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:日[ ]代表取整,即只要整数部分。
如何计算星期⼏的简单公式?问题:设当⽇ T 的⽇期是公元 y 年 m ⽉ d ⽇,求 T 是星期⼏?为了⽅便,我们⽤ 0 到 6 的整数表⽰星期,0 表⽰星期⽇,1 到 6 分别表⽰星期⼀到星期六。
(注:以下解答只适⽤于格⾥⾼利历。
)设 T 是星期 w,公元1年1⽉1⽇的前⼀天是 Z₀,Z₀是星期 w₀,T 距离 Z₀过了 S 天,于是有:w = (w₀ + S) mod 7 ①其中,mod 为 (w₀ + S) 除以 7 的余数。
⽽S = D' + D其中, D' 为 y 年 1 ⽉ 1 ⽇的前⼀天 Z 距离 Z₀的累积天数,D 为 T 在 y 年内的累积天数。
显然,Z 距离 Z₀刚好是过了 y - 1 年。
考虑⼀个平年有 365 天,再考虑闰年规定:普通闰年:能被 4 整除但不能被 100 整除的年份为普通闰年;世纪闰年:能被 400 整除的为世纪闰年,则D’ = 365(y-1) + [(y-1)/4] - [(y-1)/100] + [(y-1)/400],其中 [x] 表⽰取 x 的整数部分。
注:[x + 1/2] 就是对 x 四舍五⼊。
当 T 为公元2019年1⽉1⽇时,D = 1,D‘ = 737059,查⽇历知道公元2019年1⽉1⽇是星期⼆,即,w = 2 带⼊①有:2 = (w₀ + 737059 + 1) mod 7 = (w₀ + 737058 + 1 + 1) mod 7 = (w₀ + 105294 ×7 + 2) mod 7 = (w₀ + 2) mod 7求得:w₀ = 0⽽:(365(y-1)) mod 7 = (364(y-1) + (y-1)) mod 7 = (52×7(y-1) + (y-1)) mod 7 = (y-1) mod 7所有最终①简化为:w = ((y-1) + [(y-1)/4] - [(y-1)/100] + [(y-1)/400] + D) mod 7 ②接下来,需要计算年内累积天数 D。
如何计算某一天是星期几?——蔡勒(Zeller)公式历史上的某一天是星期几?未来的某一天是星期几?关于这个问题,有很多计算公式(两个通用计算公式和一些分段计算公式),其中最著名的是蔡勒(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。
你的生日(出生时、今年、明年)是星期几?不妨试一试。
不过,以上公式只适合于1582年10月15日之后的情形(当时的罗马教皇将恺撒大帝制订的儒略历修改成格里历,即今天使用的公历)。
过程的推导:(对推理不感兴趣的可略过不看)星期制度是一种有古老传统的制度。
据说因为《圣经·创世纪》中规定上帝用了六天时间创世纪,第七天休息,所以人们也就以七天为一个周期来安排自己的工作和生活,而星期日是休息日。
从实际的角度来讲,以七天为一个周期,长短也比较合适。
所以尽管中国的传统工作周期是十天(比如王勃《滕王阁序》中说的“十旬休暇”,即是指官员的工作每十日为一个周期,第十日休假),但后来也采取了西方的星期制度。
如何快速计算出任意一天是星期几?答:在初等数论中,有很多根据年月日计算星期的公式。
相关知识在介绍公式前,先来了解一些数学和公历相关的知识:(1)闰年规则:四年一闰,百年不闰,四百年再闰,闰年是366天,平年是365天;(2)闰月规则:闰年时,多的一天都加到二月中,平年二月28天,闰年二月29天;(3)格里高利历:我们现在使用的公历,传至西方,叫做格里高利历;在1582年10月4日(包括4日)前,罗马使用儒略历,罗马教皇格里高利十三世改革历法,针对哥白尼的日心说修正了旧历法,规则:1582年10月4日接下来的一天为10月15日,相当于历法中少了10天,但是星期继续接着前一天的;(3)取整符号:[a]表示对实数a取整,也就是抛弃小数部分,只留下整数部分,比如'[3.7865]=3';(4)同余式:若m是一个正整数,a、b为整数,且满足.a=b+km(k为整数),也就是说a和b除以m的最小正余数相同,则称a与b对模m同余,记作a≡b(mod m);根据以上历法规则和数学工具,就可以利用同余技巧来处理,因为我们计算某一天是星期几,只需要选定一个固定的日期,然后计算和另外一个日期的相差天数对“7”取余即可。
蔡勒公式其中符号:w:表示星期,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六,0-星期日;c:表示年份前两位数值;y:表示年份后两位数值m:表示月份,但是对于1、2月份需看作前一年的13、14月,这是为了简化闰年规则导致的复杂度;d:表示“日”;以上两个公式中,第二个其实就是第一个公式中的数值,加10后再取模,需要注意的是,在公历中1582年10月5日~1582年10月14日的这十天,是不存在的。
实际应用比如我们来计算2018年9月2日,带入第一个方程:w=(18+[18/4]+[20/4]-2*20+[13(9+1)]/5)+2-1)(mod7)=(18+4+5-40+26+1)(mod7)=14(mod7)=0于是,2018年9月2日这天,就是星期天!当然,我们现在手机里有了万年历,实际当中就不需要去计算了。
根据年月日推算是星期几的公式有时候,想知道公元某年某月某日是星期几,可以用下面的公式算出来:这里的方括号表示只取商的整数部分。
式中: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年国庆节是星期五。
如果,你只想知道这个公式怎样用,到这儿就可以了。
而要想知道这个公式的道理是什么,那可就说来话长了。
“星期制”是公元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的倍数的一般都是闰年,其中,年份是整百数的y x x x x s +⎥⎦⎤⎢⎣⎡-+⎥⎦⎤⎢⎣⎡--⎥⎦⎤⎢⎣⎡-+-=40011001411一般不是闰年,只有年份是400的倍数的才是闰年。
计算星期几的公式日期格式y-m-d,y为年份数(y>1582),m为月份数(0<m<13),d为日数(0<d<28、29、30、31)。
y、m、d为整数。
例如2008-8-1,各变量分别是y=2008,m=8,d=1。
1、常用公式W = [y-1] + [(y-1)/4] - [(y-1)/100] + [(y-1)/400] + D式中变量说明:W为星期数,y为年份数,D为该日期在该年中的排序数;[X]为对X取整,下同。
2、蔡勒(Zeller)公式W=Y+[Y/4]+[C/4]-2C+[26(M+1)/10]+d-1公式中的符号含义如下:W为星期数;C为世纪;Y为年(两位数);M为月数(M=m (当m>2);M=m+12(m<3));d为日。
相比于通用通用计算公式而言,蔡勒(Zeller)公式大大降低了计算的复杂度。
3、基姆拉尔森计算公式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来代入公式计算。
4、蔡勒公式一种改进相比于另外一个通用通用计算公式而言,蔡勒(Zeller)公式大大降低了计算的复杂度。
不过,另外有一个似乎更加简洁更简单的改进公式,提出这个公式的人是冯思琮:W=[y/4]+r(y/7)-2r(c/4)+m’+d下,其他符号与蔡勒公式中含义相同。
r(X)为对表达式X取余;m’是m的修正数。
1至12月的修正数1’至12’如下:(1’,10’)=6;(2’,3’,11’)=2;(4’,7’)=5;(5’)=0;(6’)=3;(8’)=1;(9’,12’)=4特别地:在笔者给出的公式中,y为润年时(1’)=5;(2’)=1。
新编万年历星期速算法推导过程:1。
平年365天(52周+1天),闰年366天(52周+2天)。
平年2月28天,闰年2月29天。
由于公元1月1日设为星期六,故3月1日为星期三。
——注意这个“三”为使算法达到最简,故本算法以“星期”为计算单位。
且选3月1日为基月。
2。
每400年整一闰,或每4年且不为百年的一闰。
百年%4=0闰或(年%4=0并且年<>0)闰。
3。
每4年(3个平年+1个闰年)共208周+5天——注意这个“5天”每百年共100*(208周+5天)-1天=5217周+5天——注意这个“5天”(整百年暂设为平年)每400年共4*(5217周+5天)+1天(整400年闰)=20871周+0天——注意这个“0天”和“1天”(4个整百年只有一个闰年)即400年一轮回!(原来万年历400年前是一家)4。
万年3月1日星期算法(记住那个三)公式:某年3月1日星期几=(3天+百年%4*5天+年/4*5天+年%4+月星期表+日-1天)%7 某年3月1日星期几=(百年%4*5天+年/4*5天+年%4+月星期表+日+2天)%7或某年3月1日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7闰4百年3月1日星期算法(百年%4=0)公式:某年3月1日星期几=(年+年/4+月星期表+日+2天)%7例:0000年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三1600年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三2000年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三2001年3月1日星期几=(1+1/4+0+1+2)%7=4%7=星期四2004年3月1日星期几=(4+4/4+0+1+2)%7=8%7=星期一2008年3月1日星期几=(8+8/4+0+1+2)%7=13%7=星期六2042年3月1日星期几=(42+42/4+0+1+2)%7=55%7=星期六平4百年3月1日星期算法(百年%4<>0)公式:某年3月1日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7例:1700年3月1日星期几=(17%4*5+0+0/4+0+1+2)%7=8%7=星期一(注意:1700年是平年)1800年3月1日星期几=(18%4*5+0+0/4+0+1+2)%7=13%7=星期六(注意:1800年是平年)1900年3月1日星期几=(19%4*5+0+0/4+0+1+2)%7=18%7=星期四(注意:1900年是平年)1901年3月1日星期几=(19%4*5+1+1/3+0+1+2)%7=19%7=星期五1918年3月1日星期几=(19%4*5+18+18/4+0+1+2)%7=(15+22+3)%7=40%7=星期五1958年3月1日星期几=(19%4*5+58/4*5+58%4+3)%7=(15+70+2+3)%7=90%7=星期六1988年3月1日星期几=(19%4*5+88/4*5+88%4+3)%7=(15+110+0+3)%7=128%7=星期二1999年3月1日星期几=(19%4*5+99/4*5+99%4+3)%7=(15+120+3+3)%7=141%7=星期一2100年3月1日星期几=(21%4*5+0/4*5+0%4+3)%7=(5+0+0+3)%7=8%7=星期一(注意:2100年是平年)2101年3月1日星期几=(21%4*5+1/4*5+1%4+3)%7=(5+0+1+3)%7=9%7=星期二2102年3月1日星期几=(21%4*5+2/4*5+2%4+3)%7=(5+0+2+3)%7=10%7=星期三2103年3月1日星期几=(21%4*5+3/4*5+3%4+3)%7=(5+0+3+3)%7=11%7=星期四2104年3月1日星期几=(21%4*5+4/4*5+4%4+3)%7=(5+1+0+3)%7=9%7=星期二(注意:2104年是闰年)9999年3月1日星期几=(99%4*5+99/4*5+99%4+3)%7=(120+15+3+3)%7=141%7=星期一注:按400年一轮回!(400年前是一家)的说法1600年,2000年是一样的1700年,2100年是一样的1800年,2200年是一样的1900年,2300年是一样的所以,万年历实际上是骗人的,应该叫“四百年历”才是。
已知12月1日是星期四,那么12月25日是星期几?
方法一:
1)先算出1日至25日一共有多少天:25-1+1=25(天)
2)一周有7天即7天为一个周期,并且12月1日是星期四,则周四作为周期的第一天,那么周期如下:
星期四,星期五,星期六,星期日,星期一,星期二,星期三
那么25日相当于是第几个周期的第几天呢?
3)计算25日是第几个周期的第几天:25÷7=3(周期)……4(天)
则,可知25日是第四个周期的第四天。
4)周期的第一天为星期四,那么周期的第四天恰好为星期日。
方法二:
12月1日星期四,那么12月8日也是星期四,即1+7=8;那么以此类推15日,22日,29日都为星期四,22日星期四,那么25日就是星期日。
方法三:(套用公式的方法)
对于这种已知本月1日是星期四,预求本月25日星期几?可以用日期数(即25)和1日的星期数(即4)相加,减去1后再除以7,看余数是几,那么就是星期几(无余数即余数为0时为星期日)。
如果加减后所得的数比7小,那么得数是几那天就是星期几。
算式为:(25+4-1)÷7=4,结果没有余数则25日那天为星期日。
计算经过的日期和算星期几
首先,我们需要理解日期的概念。
在常见的日历系统中,一年被分为12个月,每个月有不同的天数。
通常情况下,一周有7天,从周一到周日。
1.计算经过的日期:
1.1加减天数:要计算经过n天后的日期,可以通过将原日期的天数加上n来得到新的日期。
但是需要注意,如果加上n之后超出了该月的最大天数,需要更新月份和年份。
1.2加减月份:要计算经过n个月后的日期,可以将原日期的月份加上n,并根据需要更新年份。
同样,需要注意如果加上n之后超出了12个月,则需要更新年份。
1.3加减年份:要计算经过n年后的日期,可以将原日期的年份加上n。
需要注意的是,闰年的处理需要根据闰年规则进行。
2.确定星期几:
要确定给定日期是星期几,可以使用一些算法和公式。
2.1 Zeller's Congruence:这是一个经典的算法,用于确定公历日期对应的星期几。
它基于下面的公式:
h=(q+26(m+1)/10+k+k/4+j/4+5j)%7
其中,h是星期几(0表示星期六,1表示星期日,……,6表示星期五);q是日期;m是月份(3表示3月,4表示4月,……,14表示2月);k是年份的最后两位数;j是年份的前两位数。
2.2 Doomsday Algorithm:这是另一种用于确定公历日期对应的星期几的算法。
这个算法基于数学推导,利用一些特定的日期来计算其他日期的星期几。
以上就是计算经过的日期和确定星期几的一些常用算法和公式。
使用这些算法和公式,我们可以快速准确地计算经过的日期和星期几。
日期计算计算指定日期是星期几在日常生活中,我们经常需要知道某个具体日期是星期几,无论是为了安排行程、查找历史事件,还是满足其他需求。
下面将介绍一种计算指定日期是星期几的方法,以便能够在需要时快速获取相关信息。
要计算指定日期是星期几,我们可以使用蔡勒公式(Zeller's Congruence)。
这个公式是由卡尔·弗里德里希·威廉·蔡勒(Karl Friedrich Gauss)在18世纪末发现的。
该公式基于一个假设,即西方历法的星期循环长度为7天。
使用蔡勒公式可以计算任意历法下的日期是星期几。
下面是蔡勒公式的数学表达式:h = (q + (13 * (m + 1) / 5) + K + (K / 4) + (J / 4) - 2 * J) mod 7其中,h:表示星期几,0代表星期六,1代表星期日,以此类推。
q:表示月份中的天数。
m:表示月份,3代表3月,4代表4月,依此类推,对于1月和2月需要将其视为前一年的13月和14月。
K:表示年份的最后两位数。
J:表示世纪数,即年份的前两位数。
蔡勒公式有一个小问题,即对于一年中的1月和2月,我们需要将其视为上一年的13月和14月进行计算。
因此,在使用蔡勒公式时,需要对年份和月份进行一些调整。
接下来,我们以一个例子来说明具体的计算步骤。
假设我们要计算2023年9月10日是星期几。
首先,根据需求,我们需要做一些年份和月份的调整:若月份为1月或2月,则月份视为前一年的13月或14月,年份减1;否则继续按照当前年份和月份计算。
在本例中,9月不是1月或2月,因此我们继续按照2023年9月进行计算。
按照公式,我们可以得到:h = (10 + (13 * (9 + 1) / 5) + 23 + (23 / 4) + (20 / 4) - 2 * 20) mod 7根据蔡勒公式,我们将日期、月份、年份的数值带入公式中计算。
在计算过程中,需要注意除法运算时保留整数部分。
巧算星期几
巧算星期几
朋友,您想很快就知道2017年某月某日是星期几吗?这里告诉您一个简单的办法。
您只要记住622503514624这12个数字就可以了。
这12个数字叫基数。
每月一个:如下表
如果您想知道2017年某月某日是星期几,就用这个月的基数加上这个月的日数之和被7除,余几就是星期几。
如果正好除尽就是星期日。
下面举几个例子;
例一;2017年1月1日是星期几?
解答;因为1月份的基数是6,而6加1其和等于7,所以这天是星期日;
例二;2017年3月8日是星期几?
解答;因为3月份的基数是2,而2加8其和等于10,被7除余3.所以这天是星期三;
例三;2017年5月8日是星期几?
解答;因为5月份的基数是0,而0加8其和等于8,被7除余1.所以这天是星期一;
例四;2017年7月8日是星期几?
解答;因为7月份的基数是5,而5加8其和等于13,被7除余6.所以这天是星期六;
不知您学会了没有?。
周期问题——《巧算“星期几”》教学目标:1、根据时间、日期的知识,解决一些时间问题。
2、掌握计算共经过的天数:从头到尾总天数除以7得出的余数是几,就从第一周期第一项开始数几,即可推知是星期几。
算头不算尾、算尾不算头的总天数除以7得出的余数是几,就从第一周期第一项的下一项开始数几,推知是星期几。
教学过程:一、实践畅销1、探究1:平南小学从2011年12月1日到2011年12月20日举行第三届英语节活动,活动一共举行了多少天?T::请独立思考,比一比谁能快速得出结果?S1:20天S2:19天T:谁的想法对?用什么方法验证?S:可以将日期列一列。
S:可以列算式20-1=19 19+1=20T:为什么要加1?(头尾都要算,所以要加1)小结:计算从某年(月日)起到某年(月、日)共经过的天数,一般要连头带尾算,也就是经过的年数(天数)=结尾数-开始数+1。
板书:经过的年数(天数)=结尾数-开始数+12、试一试:根据上面的方法,算算经过的天数。
2012年的春节从2012年1月22日到2012年1月31日,经过了()天。
2008年3月10日到2008年4月10日,经过了()天。
T:先独立思考,再将你的想法和同桌交流。
反馈:1)31-22+1=10天2)31-10+10+1=32天3、探究2:2012年第二学期从2月7日开学到2012年6月25日放假,一共有()天。
T:这道题的天数较多,你准备用什么办法解决?先试一试,填一填,再集体反馈反馈:可以用分段推算的方法。
注意考虑2012年是闰年,注意考虑到2月份有29天。
可以将这些天分段如下:第一段:2月7日到2月29日,共23天。
第二段:3月共31天。
第三段:4月共30天第四段:5月共31天第五段:6月1日到6月25日共25天。
合计天数:23+31+30+31+25=140天追问:如果开学那天是周二,放假那天是周几?S1:140/7=20,没有余数,所以是周二S2:应该是周一。
根据公历日期计算星期的公式xx(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+[]+[]-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+[]+[]-2*20+[26*(4+1)/10]+4-1=-12 (除以7余2,注意对负数的取模运算!)不过,以上的公式都只适合于1582年(我国明朝万历十年)10月15日之后的情形。
罗马教皇格里高利十三世在1582年组织了一批天文学家,根据哥白尼日心说计算出来的数据,对儒略历作了修改。
将1582年10月5日到14日之间的10天宣布撤销,继10月4日之后为10月15日。
后来人们将这一新的历法称为“格里高利历”,也就是今天世界上所通用的历法,简称格里历或公历。
根据年月日巧算星期几蒲纺二小乐志超王宝山亲爱的读者,如果给你年月日的具体数据,你能很快推算出这一天是星期几吗?笔者在辅导学生数学活动的时候,发现了一个有趣的规律。
现整理出来,供广大数学爱好者参考。
首先说说三个小常识:一、公元元年的元月一日是星期一;二、公元年分平年和闰年,平年每年有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”表示。
==本文为word格式,下载后可方便编辑和修改!==
星期几的速算方法
在学习了找规律以后,经常会出现一些求“某月某日”是星期
几的问题。
例如:“今年一月一日是星期五,十月一日是星期几?”解这道题的一般方法是:
(1)先求出一月一日到十月一日的天数和
31+28+31+30+31+30+31+31+30+1=274(天)
(2)再求出7除天数和的余数
274÷7=39(组)……1(天)
(3)最后求出十月一日是星期几
从星期五算起,因余数是1,所以十月一日是星期五。
这种算法在求“天数和”及“余数”时,既麻烦又容易出错。
有一种求星期网几的简便速算法——“7余数”法。
“7余数”法是
指一个数除以7,得到的余数。
(若一个数能被7除尽,余数为0。
)
每年各月份按天数多少分组,分别列出它们的7余数如下:
大月(31天的有:1月、3月、5月、7月、8月、10月、12月)的7余数是3。
小月(30天的有:4月、6月、9月、11月)的7余数是2。
平年二月(28天)的7余数是0。
闰年二月(29天)的7余数是1。
这样前面的题共经过五个大月三个小月和一个平月,再加网上
十月一日这一天,共经过天数的7余数为:3×5+2×3+0+1=22(天),22的7余数是1。
所以今年十月一日与元旦同是星期五。