根据公历日期计算星期的公式
根据公历日期计算星期的公式
蔡勒(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。
小学趣味数学——根据年、月、日推算是星期几的公式
小学趣味数学——根据年、月、日推算是星期几的公式 有时候,想知道公元某年某月某日是星期几,可以用下面的公式算出来:这里的方括号表示只取商的整数部分。
式中: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的倍数的才是闰年。
给出年月日,计算星期几--算法及算法来历
= 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太大了。其实,
计算某天是星期几
计算某天是星期几(含六个例程)计算某天是星期几,最常见的公式: 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日“世界无烟日”是星期几就不难推算出来。
计算任何一个日期的星期数
星期数的计算懂得公历日期变化规律的人都可以将一个日期的星期数计算出来,如果不知道正确的方法可能会很是麻烦。
现在我们给出一个方便的计算星期数的公式,为此首先规定:星期日=0,星期一=1,星期二=2,星期三=3,星期四=4,星期五=5,星期六=6另外注意闰年比平年多加的一天不是年头也不是年尾,而是在2月29日,所以为了计算方便,我们把3月作为一年的第一个月,4月作为一年的第二个月……而1月、2月则分别为去年的第十一个月和第十二个月。
作了这样的规定之后,1997年7月1日就要写为1997年“5月”1日,2000年1月2日就要写为1999年“11月”2日。
现在假定给出一个日期:N年m月d日(年份N=100c+y,其中c为世纪数,y为年代数),则该日期的星期数W=d+[ (13m-1)]+y+[ y]+[ c]-2c(mod7)其中方括号表示不超过这个数的最大整数,mod为数学符号,如a(modb)表示一个数,此数在0到b范围内(若b小于零,则在b到0范围内),若a∈[0,b),则a(modb) =a,若a不在0到b范围内,则a(modb)等于a加或减b的整数倍后处于0到b范围内的一个值。
这里值得注意的是,目前国际通用的公历是教皇格里高利十三实行的。
当时他召集了很多学者和僧侣讨论历法改革问题,决定采用业余天文学家利里奥的方案,没四百年去掉三个闰日。
公元1582年格里高利颁发改历的命令:(1)把1582年10月4日后的一天改为1582年10月25日;(2)那些世纪数不能被4整除的世纪年,如1700、1800、1900、2100、……不再作为闰年,仍算为平年。
这两条规定至为重要,第一条规定实质上把春分固定在3月21日左右,解决了日历与天时不符合的矛盾,第二条规定使历法的精度大大提高,保证了这种历法在相当长的时间里仍能实用。
根据这项规定,每400年中有97个闰年,总天数为365×400+97=146097(天)因此平均每年的长度为146097÷400=365.2425(天)这与回归年实际值365.2422天相差仅有0.0003天,换句话说,要经过3300多年,两者才有一天的相差。
知道公历日期计算星期
知道公历日期计算星期:
黄远珦
随便给一个日期,就可以推算出是星期几。
计算方法如下:模拟数除以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:日[ ]代表取整,即只要整数部分。
如何计算某一天是星期几
如何计算某一天是星期几在计算机学科中,我们可以用一些算法和公式来确定其中一天是星期几。
一种常用的算法是蔡勒公式(Zeller's congruence)。
蔡勒公式是由蔡耳(Christian Zeller)于1883年提出的一种公式,它可以在不使用计算机的情况下,快速计算出给定日期的星期几。
蔡勒公式的数学表达式如下:h=(q+(13*(m+1)/5)+K+K/4+J/4+5*J)%7其中h是星期几,取值范围为0到6,分别表示星期六到星期五;q是日期中的天数,取值范围为1到31;m是月份,如果是1月或2月,需要将其转换为13和14月,并将年份减少1,即转换为前一年的13月和14月;K是年份的最后两位数;J是年份的前两位数,需要注意的是,公式中J除以4的结果是整数除法,即只取整数部分。
首先,我们需要确定给定日期的年份(J)、月份(m)和天数(q)。
然后,我们对日期的月份和年份进行转换(如果需要),使用蔡勒公式计算出h的值。
根据h的值,我们可以得知给定日期是星期几。
让我们通过一个例子来说明如何计算其中一天是星期几。
假设我们要计算2024年5月20日是星期几。
首先我们将年份拆分成J和K。
对于2024年,J=20,K=22然后我们将月份进行转换,因为5月属于前一年的13月,所以我们需要将年份减少1,转换成前一年的13月和14月。
所以m=13接下来,我们需要计算h的值,根据蔡勒公式的表达式,我们可以将这个过程分解为以下步骤:1.计算(13*(m+1)/5)=(13*(13+1)/5)=522.计算K+K/4=22+22/4=27(整数除法)3.计算J/4=20/4=5(整数除法)4.计算5*J=5*20=1005.所以h=(q+52+27+5+100)%7=(20+52+27+5+100)%7=204%7=5最后,根据h的值,我们得出结论,2024年5月20日是星期五蔡勒公式是一种简单而有效的计算其中一天是星期几的方法。
怎样计算任一天是星期几
怎样计算任一天是星期几摘要:最常见的公式: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日“世界无烟日”是星期几就不难推算出来。
如何计算星期几的简单公式?
如何计算星期⼏的简单公式?问题:设当⽇ 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。
万年历的算法
摘自: 星期、干支、二十八宿计算公式打印本页关闭本窗口1. 求星期公式星期=[5+A(实际天数)] mod 72. 干支计算公式六十甲子干支序号,从1->59->0。
六十甲子干支序号=[23+A(实际天数)] mod 603. 二十八宿计算公式二十八宿序号=[23+A(实际天数)] mod 284. 实际天数A的计算A=B(基本天数)+C(闰日天数)B=(计算年-1)*365+(要计算到年的月日天数)例:1984年2月1日的基本天数B=(1984-1)*365+(31+1)=723827(天),其中,31是1月为31天,1为2月1日为1天。
公元308年8月28日的基本天数B=(308-1)*365+(31+28+31+30+31+30+31+27)=112055+239=112294(天)这里的(要计算到年的月日天数),用的是公历,月日天数的规则我好象小学就学过了。
哈哈……C=(计算年-1) div 4 -误差修正值+ fixValue2fixValue2为0或者1。
常值为0,当年数为闰年(公历闰年法)之中的3月1日之后的为1。
误差修正值推算:公元元年1月1日至1582年10月14日为0。
1582年10月15日至1699年12月31日为10。
从1701年1月1日起每增加一个世纪累加1,但能被400除尽的世纪不累加1。
此方法推算即可。
--有一个问题,1700年这一年的修正值应为多少呢?算法中正好没有讲到,但看来应该是10。
例1701年1月1日起误差值为11,而1801年1月1日起误差修正值为12,而1901年1月1日起误差修正值为13,但2001年误差修正值仍为13,因为2000年能被400整除,故不累加。
而2101年1月1日起误差修正值为14。
5. 实例:1998.3.15的星期、干支与二十八宿B=(1998-1)*365+(31+28+15)=728979C=(1998-1) div 4 - 13 + 0 = 486A=B+C=728979+486=729465星期序号=(5+729465) mod 7=0,即为星期日干支序号=(13+729465) mod 60=58,即为辛酉二十八宿序号=(23+729465) mod 28=4,即为房===================================================好可怕!还有一些其它公式……但好象有些参数不知道怎么得到:二十四节交节日算法:用已知年的交接时辰加上22个小时35分,超过24要减去24,分数足60 进1个小时,即得到8年后的各节交节时辰。
计算星期几的常用公式
计算星期几的常用公式
S =x -1+[41-x ]-[1001-x ]+[400
1-x ]+c 其中x 是公元的年数,c 是从这一年的元旦算起到这一天为止〔包括这一天在内〕的天数,方括号表示其中算式的整数部分,即在计算S 的值时,3个方括号中只要算出商数的整数部分,把余数略去不计、
按此算式求出的值后,除以7,余几确实是星期几,除尽了确实是星期日、 例1:西安事变发生在1936年12月12日,试计算当天是星期几? 解:x =1936,c =347
因此可得,
S =1936-1+[411936-]-[10011936-]+[400
11936-]+347 =1935+483-19+4+347
=2750
2750÷7=392 (6)
因此,西安事变发生在星期六、
例2:试计算1998年圣诞节是星期几?
解:圣诞节是12月25日,因此,x =1998,c =359
S =1998-1+[411998-]-[10011998-]+[400
11998-]+359 =1997+499-19+4+359
=2840
2840÷7=405 (5)
因此,1998年圣诞节是星期五、
那个计算方法依照的是每四年一闰、百年不闰、四百年再闰的历法,即格里历、格里历是从公元1582年开始实行的、因此,用那个方法能够计算公元1582年以后某年某月某日是星期几、。
