计算星期几的方法

合集下载

计算任何一天是星期几的几种算法

计算任何一天是星期几的几种算法

计算任何⼀天是星期⼏的⼏种算法近⽇在论坛上看到有⼈在问星期算法,特别整理了⼀下,这些算法都是从⽹上搜索⽽来,算法的实现是我在项⽬中写的。

希望对⼤家有所帮助。

⼀:常⽤公式W = [Y-1] + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + DY是年份数,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来代⼊公式计算。

日的函数公式

日的函数公式

日的函数公式
日的函数公式是用来计算一个特定日期的星期几的数学公式。

它是根据基姆拉尔森计算公式(Zeller'scongruence)而来,该公式可以用一种简单的方式来计算一个日期是星期几。

日的函数公式的公式如下:
W= (d+2m+3(m+1)/5+y+y/4-y/100+y/400+1) mod 7
其中,W代表星期几,d代表日期,m代表月份,y代表年份。

需要注意的是,这个公式只适用于格里高利历(即使用于大部分国家的公历),而不适用于其他历法,如农历。

日的函数公式可以用于很多应用中,例如判断一个日期是工作日还是休息日,或者在日历中标记特定的日期。

它的计算方法虽然比较复杂,但是只要掌握了公式,就可以快速地计算出一个日期的星期几。

- 1 -。

星期计算公式

星期计算公式

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

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

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

首先,我们需要明确一点,那就是一周有七天,从星期一到星期日分别为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天,最后根据减去天数后的结果来确定新的星期。

计算某天是星期几

计算某天是星期几

计算某天是星期几(含六个例程)计算某天是星期几,最常见的公式: W = [Y-1] + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D Y是年份数,D是这一天在这一年中的累积天数,也就是这一天在这一年中是第几天。

计算某天是星期几,最常见的公式:W=[Y-1]+[(Y-1)/4]-[(Y-1)/100]+[(Y-1)/400]+DY是年份数,D是这一天在这一年中的累积天数,也就是这一天在这一年中是第几天。

最好用的是蔡勒公式:W=[C/4]-2C+y+[y/4]+[13*(M+1)/5]+d-1C是世纪数减一,y是年份后两位,M是月份,d是日数。

1月和2月要按上一年的13月和14月来算,这时C和y均按上一年取值。

两个公式中的[...]均指只取计算结果的整数部分。

算出来的W除以7,余数是几就是星期几。

如果余数是0,则为星期日。

星期制度是一种有古老传统的制度。

据说因为《圣经〃创世纪》中规定上帝用了六天时间创世纪,第七天休息,所以人们也就以七天为一个周期来安排自己的工作和生活,而星期日是休息日。

从实际的角度来讲,以七天为一个周期,长短也比较合适。

所以尽管中国的传统工作周期是十天(比如王勃《滕王阁序》中说的“十旬休暇”,即是指官员的工作每十日为一个周期,第十日休假),但后来也采取了西方的星期制度。

在日常生活中,我们常常遇到要知道某一天是星期几的问题。

有时候,我们还想知道历史上某一天是星期几。

通常,解决这个方法的有效办法是看日历,但是我们总不会随时随身带着日历,更不可能随时随身带着几千年的万年历。

假如是想在计算机编程中计算某一天是星期几,预先把一本万年历存进去就更不现实了。

这时候是不是有办法通过什么公式,从年月日推出这一天是星期几呢?答案是肯定的。

其实我们也常常在这样做。

我们先举一个简单的例子。

比如,知道了2004年5月1日是星期六,那么2004年5月31日“世界无烟日”是星期几就不难推算出来。

计算星期几的方法

计算星期几的方法

计算任何一个日期是星期几的方法蔡勒公式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世纪。

星期的计算

星期的计算

星期的计算是以数学方法计算出某一指定日期是在一周中的哪一天。

多种数学算法可计算出过去或未来某一指定日期,是属于一周中的星期几,包括判决日法则(Doomsday Rule),Babwani公式等,但其实这些算法皆基于类似的机制相互变化而来,只是透过不同规则取得相同结果。

算法的典型应用,是计算某人的出生日期或某重大事件的发生日期,是在一周中的哪一天。

目录[隐藏]1 简介1.1 最简单的方法一1.2 最简单的方法二2 有用的概念2.1 同周月2.2 同周年3 算法3.1 例子3.2 世纪星期表3.3 年份星期表3.4 月份星期表3.5 日期星期表4 表格法5 心算法5.1 判决日5.2 年数的计算5.3 例子6 高斯公式6.1 例子7 Babwani公式8 蔡勒公式9 主日字母10 参见[编辑]简介差不多所有星期算法的基础皆可归纳如下:从一个已知的日子作为起始日,一般采用世纪的第一天,通过同余7计算共过去了多少天。

如将一周日子由0至6计算,结果将为一余数,如使用1至7计算,则7将代替0。

查表或使用已知规则计算上面的起始日,即该世纪开始的星期数。

查表或使用已知规则计算该年份开始的星期数。

计算该月份开始的星期数。

从该月份开始的计算该日的星期数。

简单来说,使用同余7表示在计算中可剔除7的倍数,如此可把7当作0、8当作1、9当作2、18当作4,如此类推。

如果把星期日当作第0日,7日后(第7日)亦是星期日,而第18日则会与第4日相同,为星期日后的4天,即星期四。

一些算法把所有加数先行计算,然后把7的倍数剔除,而其他算法则在每一步皆剔除7的倍数。

两种做法皆可取,第一种做法较适用于计算机及电脑算法中,其他则较适用于心算。

这些计算在熟习后,可在脑内计算出来。

[编辑]最简单的方法一把四个数加起来然后除七的余数就是,如果整除就是星期日。

这四个数分别是:Y(year):年份减2000L(leap days):从2000年1月1日到该日之间的闰日数目M(month):月份的代号,从一月到十二月分别是511462403513,即是一月是5,二、三月是1,四月是4,五月是6,如此类推,十二月是3就是说——Y+L+M+D(除7的余数)举例说:2008年12月10日(8+3+3+10)除7余3,即该日是星期三,其中Y=8、L=3(三个闰日分别是2000年2月29日、2004年2月29日和2008年2月29日)、M=3(12月的代号是3)、D=10再举一例:2008年2月10日(8+2+1+10)除7余0,即该日是星期日,其中Y=8、L=2(从2000年1月1日到2008年2月10日之间只有二个闰日:2000年2月29日和2004年2月29日)、M=1(2月的代号是1)、D=10此公式的原理365除七余一,所以每过一个平年,星期数便加一。

日历查询的算法如何计算某一天是星期几

日历查询的算法如何计算某一天是星期几

⽇历查询的算法如何计算某⼀天是星期⼏—— 蔡勒(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⽇之后的情形(当时的罗马教皇将恺撒⼤帝制订的儒略历修改成格⾥历,即今天使⽤的公历)。

星期制度是⼀种有古⽼传统的制度。

据说因为《圣经·创世纪》中规定上帝⽤了六天时间创世纪,第七天休息,所以⼈们也就以七天为⼀个周期来安排⾃⼰的⼯作和⽣活,⽽星期⽇是休息⽇。

从实际的⾓度来讲,以七天为⼀个周期,长短也⽐较合适。

所以尽管中国的传统⼯作周期是⼗天(⽐如王勃《滕王阁序》中说的“⼗旬休暇”,即是指官员的⼯作每⼗⽇为⼀个周期,第⼗⽇休假),但后来也采取了西⽅的星期制度。

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

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

计算某年某月某日是星期几的方法
算式:
S=X-1+[(X-1)/4] -[(X-1)/100] +[(X-1)/400]+C
其中 x是公元的年数,C是从这一年的元旦算起到这一天为止(包括这一天是内)的天数。

方括号表示其中算式的整数部分,即在计算S 的值时,三个方括号中只要算出商数的整数部分,把余数略去不计。

求出S的值之后,除以7,余几就是星期几;除尽了就是星期日。

举例:
1.计算西安事变发生在星期几。

解西安事变发生在1936年12月12日,所以x=1936 C=347于是可得:
S=1936-1+[(1936-1)/4] -[(1936-1)/100] +[(1936-1)/400]+347 =1935+483-19+4+347=2750
2750÷7=392………6,
所以西安事变发生在星期六
2.计算一下今天(2006年6月11日)是星期几;此时x=2006, C=162,于是可得 :
S=2006-1+[(2006-1)/4] -[(2006-1)/100] +[(2006-1)/400]+162 =2005+501-20+5+162=2653
2653÷7=379,无余数,
所以,今天是星期日。

说明:
这个计算方法根据的是每四年一闰、百年不闰、四百年再闰的历法,该历法是从公元1582年开始实行的,所以,用这个方法可以计算公元1582年以后某年某月某日是星期几。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算星期几的方法
计算任何一个日期是星期几的方法
蔡勒公式
W = [C/4] - 2C + y + [y/4] + [13 X(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=1
W = [C/4] - 2C + y + [y/4] + [13 x(M+1) / 5] + d - 1 =[20/4] - 2 X20 + 04 + [04/4] + [13 X(9 + 1 ) /5] + 1
=5 - 40 + 4 + 1 + [13 X2] + 1 - 1
=5 - 40 + 4 + 1 + 26 + 1 - 1
=—4
W为负数不行,加7的倍数14,得10。

10除以7,余数为3 , 2004年的9月1日是星期三。

例2 : 2010年的7月15日是星期几?
C=20 y=10 M=7 d=15
W = [C/4] - 2C + y + [y/4] + [13 x(M+1) / 5] + d - 1 =[20/4] — 2 X20 + 10 + [10/4] + [13 X(7 + 1 ) /5] + 15 —1
=5 —40 + 10 + 2 + [13 X8/5] + 14
=—23 + 20 + 14
=11
11除以7余数为4, 2010年的7月15日是星期四。

链接:1世纪为100年2000年以后为21世纪,以此类

1个年代为10年90-99为90年代,以此类推!
女口:1900年是19世纪、1901年是20世纪、2000年
是20世纪、2001年是21世纪。

已知一个日期及对应的星期数
求另一个日期是星期几的简便算法
例①:2007年4月20日是星期五,5月25日是星期几?
第一步:算出相差的天数。

10+25=35
关键:1、不包括开始的那一天;
2、遇有大月以及平(闰)年的二月时要注意辨别;
第二步:算出有多少个星期及剩余几天。

35 +7=5 0
第三步:余数加上已知的星期数,就是要求的星期数(结
果大于7的减去7即可)。

0+5=5
答:2007年5月25日是星期五
例②:2007年4月3日是星期二,4月25日是星期几?
25-3==22 22 +7=3 ……1 1+2=3 答:2007 年4月25日是星期三
例③:2007年2月22日是星期四,5月3日是星期几?
6+31+30+3=70 70 +7=10 0+4=4
答:2007年5月3日是星期四
答案:星期五、星期一、
星期六、星期一、星期四、星期五 4+12=16 答:2007年 练习题:
1、 2010 年
2、 2010 年
3、 2010 年
4、 2010 年
5、 2010 年 16 -7=2 ……2 2+7-7=2 6月12日是星期二 2月3日是星期三, 2月25日是星期四, 3月19日是星期五, 5月18日是星期二, 1月10日是星期日,
12月25日是星期六, 3月12日是星期几? 4月12日是星期几? 5月22日是星期几? 4月12日是星期几? 8月12日是星期几? 7月16日是星期几?。

相关文档
最新文档