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

回历与公历换算

xjtudll13年前 (2013-07-03)技术心得57880

伊斯兰教历以希吉来为纪元,“希吉来”是阿拉伯语“迁移”一词的音译,系指公元622年9月24日穆罕默德率众由麦加迁往麦地那之事。为使公历纪年元旦与阿拉伯太阴历纪年(以月亮绕地球一周而又与太阳相会,为一个月)岁首相合,特定儒略历622年7月16日(公历622年7月19日,将月日都以单位年表示,这一天则为“公历622.547.9年”)为伊斯兰教历元年1月1日。

伊斯兰教历属于阴历,全年只12个朔望月,每月29日12时44分3秒。不增置闰月,约三年有一个闰日,闰年355日;平年354日。在中国,伊斯兰教历俗称为“回历”,回历的月份以见新月为月首。

公历历年的平均长度为365.2425日,而回历历年的平均长度为354.3667日,1回历年相当于0.970223公历年。相比公历,回历每年少11日,公历的32年相当于回历的33年左右。

任何一年回历的元旦所对应的公历日期,可用下式求得:

公历日期=0.970223×(回历纪年-1)+ 622.5479

所得整数即为该年的公历纪年,以小数乘以公历年长365.2425日,再将所得日数化成该公历年的月日,便可得该回历年元旦所对应的公历日期。

例如,据此公式计算出:

① 回历1407年元旦,对应公历1986年9月6日;

② 求回历1420年5月10日所对应的公历日期,首先算出回历1420年元旦是公历1999年4月17日,接下来累计回历5月10日的积日(1月30日+二月29日+三月30日+四月29日+10日=128 日),128日-1(元旦)=127日,从公历1999年4月17日之后再加107日,便知回历1420年5月10日对应公历1999年8月22日;

③ 回历1430年1月1日,对应公历2008年12月29日(农历戊子年十二月初三)

注意:这个算法可能会有一天的误差,即有可能转换的日期多了或少了一天。用这个算法,还需要通过星期来校验,因为星期几是唯一的。

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

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

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

标签: 万年历
分享给朋友:

“回历与公历换算” 的相关文章

后缀名为.Q的文件为什么用按键精灵无法打开

后缀名为.Q的文件为什么用按键精灵无法打开

问题:.Q文件无法用按键精灵直接打开 解决办法: 将文件放在按键精灵目录 QMScript文件夹里。然后在按键精灵上刷新就有了 以“我的脚本.Q”为例,...

IOS textField怎样设置只能输入英文字母或者数字,不能输入汉字

参考资料: http://segmentfault.com/q/1010000002705645/a-1020000002708433 //设置键盘类型 self.textField.keyboardType = UIKeyboardTypeASCIICapable; define kAlph...

PDF factory pro Server Edition注册教程

PDF factory pro Server Edition注册教程

问题: 有注册码,但是找不到输入注册码的地方 版本:pdf Factory pro Server Edition 5.2.5 环境: Windows server 2008 R2 网上说试着打印一个文件,就会弹出注册窗口,实际没用。这个方法估计是针对单机版,不是服务器版的。 解决办法: 1、打开控...

金蝶 老单增加工具栏按钮(Raise Event)

Public Sub AddToolButton(name As String, Caption As String, Description As String, Optional imagefilename As String = '', Optional iOrder As Long = 47...

SVN修改Log信息

SVN修改Log信息

SVN默认是不能修改Log的,强行修改会报错:Repository has not been enabled to accept revision propchanges,ask the administrator to create a pre-revprop-change hook 如果需要修改...

水晶报表提示“需要数字字段”

水晶报表提示“需要数字字段”

解决方法: 1.新建一个公式字段,命名applyqty,编辑内容为:CDbl ({字段名}) 作用是将字段转换为数字字段 2.新建另外一个sum的公式字段,内容如下 if isnull({@applyqty}) then 0 else sum({@applyqty}) 这样...

发表评论

访客

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