当前位置:首页 > 技术心得 > 正文内容

万年历星期算法分析

xjtudll17年前 (2009-12-10)技术心得21011
 
1、 蔡勒公式
  w=(y+[y/4]+[c/4]-2*c+[26*(m+1)/10]+d-1)%7               
考虑到取值范围,为使蔡勒公式中不出现负数,实际中可用以下公式:
c<99,2c<198,加上一个203,这样的话可以保证等号右边括号里不出现负数(203=29*7)。
  w=(203+y+[y/4]+[c/4]-2*c+[26*(m+1)/10]+d-1)%7
公式中符号含义如下:
  w:星期,w对7取模得。0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
  c:世纪-1(前两位数)
  y:年(后两位数)
  m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)
  d:日
  [  ]:高斯符号,代表取整,即只要整数部分。
 
以上的公式都只适合于1582年(我国明朝万历十年)10月15日之后的情形。罗马教皇格里高利十三世在1582年组织了一批天文学家,根据哥白尼日心说计算出来的数据,对儒略历作了修改。将1582年10月5日到14日之间的10天宣布撤销,继10月4日之后为10月15日。
若要计算的日期是在1582年10月4日或之前,公式则为:
  w=(y+[y/4]+[c/4]-2*c+[26*(m+1)/10]+d+3)%7  
 
2、 对蔡勒公式的简化改进
 
w=([y/4]+y%7-2*(c%4)+m'+d)%7
此公式由冯思琮提供。
为避免出现负数,可用以下公式:
  w=(7+[y/4]+y%7-2*(c%4)+m'+d)%7
公式中除m'以外,其他符号的含义与蔡勒公式相同。
闰年1~12月修正值m'如下表:

月份
1
2
3
4
5
6
7
8
9
10
11
12
修正
5
1
2
5
0
3
5
1
4
6
2
4

注意:在平年的情况下,1月份的修正值为6,2月份的修正值为2。其他不变。
该公式同样只适用于1582年10月15日以后。
 
3、 HotPower菜农星期公式
  w=((c%4)*5+y+[y/4]+m'+d+2)%7
闰年1~12月修正值m'如下表:

月份
1
2
3
4
5
6
7
8
9
10
11
12
修正
3
6
0
3
5
1
3
6
1
4
0
2

注意:在平年的情况下,1月份的修正值为4,2月份的修正值为0(等同于7)。其他不变。
如果不想用查表的方式,可用以下公式:
  w=((c%4)*5+y+[y/4]+[(13*m+8)/5]+d)%7
此公式所有符号含义同蔡勒公式,m取3~14,某年的1,2月要看作上一年的13,14月。实际上该公式就是蔡勒公式转化而来。所以,该公式同样只适用于1582年10月15日以后。
 

 

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://xjtudll.cn/Exp/14/

标签: 万年历算法
分享给朋友:
返回列表

没有更早的文章了...

下一篇:Multisim几则使用技巧

“万年历星期算法分析” 的相关文章

MEMS微电子机械系统

文章来源:http://www.memschina.com MEMS(Micro Electromechanical System,即微电子机械系统)是指集微型传感器、执行器以及信号处理和控制电路、接口电路、通信和电源于一体的微型机电系统。概括起来,MEMS具有以下几个基本特点,微型化、智能化、多...

eclipse菜单里找不到“Android SDK Manager”

eclipse菜单里找不到“Android SDK Manager”

有的时候ADT即使安装正确了,却找不到Android SDK Manager。 Windows选项卡里没有Android SDK Manager,也没有Android Virtual Device Manager。如下图所示。 解决办法如下: 1、Windows选项卡,Customize Pers...

销售订单序时簿中过滤界面中,【名称】的下拉列表中无法选择到【购货单位】,也就是无法按【购货单位】过滤销售订单?

【操作步骤】  1、使用有权限的用户登录K3主界面后,单击左上角【系统】→【K/3BOS】,输入用户名及密码,登入账套,依次单击打开【供应链】→【销售管理】,找出业务单据销售订单并双击打开;  2、单击菜单【编辑】-【序时簿设置】,找到字段【购货单位$】,并单击选择对应【过滤列表...

Proteus7.8 SP2安装及破解包下载

老王这个人确实很牛啊,之前Proteus7.6和Proteus7.7都是他破解的,现在又将Proteus7.8 SP2破解了。   大概看了看,Proteus7.8新增的是几个PIC的单片机 Proteus7.8安装包下载地址: http://cache.ourdev.cn/bbs...

群晖Apache 忽略文件名大小写

群晖Apache 忽略文件名大小写

参考资料:https://www.cnblogs.com/shipment/p/14767848.html 1、SSH登录群晖ssh  admin@201.201.201.1682、修改conf文件权限为777sudo chmod 777 /volume1/@appstore/Apache...

IOS Autolayout ScrollView无法滚动的解决办法

参考资料: http://www.cocoachina.com/bbs/read.php?tid=175749 问题: 设定autolayout之后,发现scrollview无法滚动了,导致无法查看所有的内容。在viewDidLoad里重新设定scrollview的contentSize,还是不行。...

评论列表

去留无意
去留无意 IP:
15年前 (2011-11-22)

朋友说的对,所以当初我用的就是
w=([y/4]+y%7-2*(c%4)+m'+d)%7
其实计算结果出现负数的情况并不多。

xjtudll
xjtudll IP:
15年前 (2011-11-22)

“去留无意 ”:
您的公式虽然看起来简化了,但实际上对于程序来说,更复杂了。尤其是汇编。
因为*2只需要做移位运算,但是*5就复杂多了。

去留无意
去留无意 IP:
15年前 (2011-11-21)


蔡勒公式的改进公式也可表达为:w=([y/4]+y%7+5*(c%4)+m'+d)%7
比 w=(7+[y/4]+y%7-2*(c%4)+m'+d)%7 少一项呢:)
问好博主!

去留无意 IP: 回复:
朋友说的对,所以当初我用的就是
w=([y/4]+y%7-2*(c%4)+m'+d)%7
其实计算结果出现负数的情况并不多。
15年前 (2011-11-22)
xjtudll IP: 回复:
“去留无意 ”:
您的公式虽然看起来简化了,但实际上对于程序来说,更复杂了。尤其是汇编。
因为*2只需要做移位运算,但是*5就复杂多了。
15年前 (2011-11-22)

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。