(或者是: )
若要计算的日期是在1582年10月4日或之前,公式则为
以1582年10月4日为例:
1582年10月4日后:;
1582年10月4日前:;
或者1752年9月3日为例
1752年9月3日后:;
1752年9月3日前:;
注:罗马教皇决定在1582年10月4日后使用格利戈里历法;而英国则是在1752年9月3日后才接受使用格利戈里历法。
注意:当年的1,2月要当成上一年的13,14月进行计算。
w:星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
c:世纪(注:一般情况下,在公式中取值为已经过的世纪数,也就是年份除以一百的结果,而非正在进行的世纪,也就是现在常用的年份除以一百加一;不过如果年份是公元前的年份且非整百数的话,c应该等于所在世纪的编号,如公元前253年,是公元前3世纪,c就等于-3)
y:年(一般情况下是后两位数,如果是公元前的年份且非整百数,y应该等于)
m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)
d:日 代表取整,即只要整数部分。
下面以中华人民共和国成立100周年纪念日那天(2049年10月1日)来计算是星期几,过程如下:
w=y+
=49+
=
=
(除以7余5)
即2049年10月1日(100周年国庆)是星期五。
再比如计算2006年4月4日,过程如下:
w=
(除以7余5,注意对负数的取模运算!实际上应该是星期二而不是星期五)
;
不过,蔡勒公式只适合于1582年(中国明朝万历十年)10月15日之后的情形。罗马教皇格里高利十三世在1582年组织了一批天文学家,根据哥白尼日心说计算出来的数据,对儒略历作了修改。将1582年10月5日到14日之间的10天宣布撤销,继10月4日之后为10月15日。
后来人们将这一新的历法称为“格里高利历”,也就是今天世界上所通用的历法,简称格里历或公历。
1582.10.4之后的计算代码如下:
php代码
c代码
C++代码:
Python代码
Pascal代码:
对于计算星期数的公式还有如下的公式:
1基姆拉尔森计算公式
(其中的Year是4位数的,如2009。号是等式除7取余数)
注意:
i. 该公式中要把1月和2月分别当成上一年的13月和14月处理。
例如:2008年1月4日要换成 2007年13月4日带入公式。
ii.该式对应的与蔡勒公式有点区别:“0”为星期为星期日。
改进:
该式可能与蔡勒公式的计算都是较为复杂,但有改进的地方:对于世纪这个概念不被引用,直接就是计算年代数(4位数)的!既不用再把 世纪 和 年代数(后两位)分开。
Java代码如下:
C++代码:
C++代码2(仿照Java代码)
2其他计算公式
(年+年/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日是星期几? 即该日为星期六。
所谓月基数,就是前几个月日数总和的7余数,如1月基数,前面月数的日数总和的7余数为0,则该月的基数就是0,如4月(闰年)基数,前面三个月的日数总和为: 为了简化运算,先取各月7 余数,再相加,再取7余数:,即4月基数为0,为了加快计算速度,通常是将平年和闰年的月基数编成基数表,直接查算。
C代码:
本文发布于:2022-11-02 21:18:57,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/83/420273.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |