- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
公历和回历相互转换算法在嵌入式系统下实现
公历和回历相互转换算法在嵌入式系统下实现 【摘要】为了方便广大中国穆斯林的生活,提出了一种基于Windows CE操作系统的公历和回历相互转换算法,该算法采用C++语言在Visual Studio 2005集成开发环境下实现,给出了程序流程图和部分源代码,并在飞凌OK6410开发板上实现了设计功能。 【关键词】嵌入式;公历;回历;转换;算法 1.引言 伊斯兰教历,又称为回历。目前中国市面上的回历大多是印刷品,很少有相关电子产品的面世,利用本文设计成果制作出的万年历将给广大中国穆斯林群众的宗教和日常生活带来便利。 2.硬件实现 笔者的设计是一款带有回历查询功能的万年历,其选用基于ARM11芯片的飞凌OK6410开发板为硬件平台,软件开发采用了VS2005集成开发环境,并安装了OK6410 SDK编译软件,采用C++语言编程,最终在Windows CE嵌入式系统下完成。 3.算法思想 3.1 历法介绍 公历又称为格里历,它的前身是“儒略历”。儒略历于公元前46年编制,其历以公元前45年1月1日为历元,取回归年长度为365.25天。该历法的闰年规则是每隔3年置1闰年。儒略历一直使用至1582年10月4日才被废除,代替它的新历就是格里历,格里历修改了闰年规则,凡公元年数能被4整除的即闰年,但公元年数后边带两个“0”的世纪年,仅能被400整除的年份仍为闰年,其他世纪年被调整为平年,取回归年的长度为365.2425天。罗马教皇格里高利十三世于1582年10月15日颁发了格里历,一直使用至今。 回历是纯太阴历。其历法为:平年354天,闰年355天。一年为12个月,奇数月为大月30天;偶数月为小月29天;十二月,平年为29天,闰年为30天。每30年为一个循环周期,每个循环周期中平年19个,闰年11个。每30年的第2、5、7、10、13、16、18、21、24、26、29各年为闰年,其余各年为平年。该历元年元旦相当于儒略历622年7月16日,取每年平均长度为354.3667天。 3.2 转换的关键 虽然两种历法依照各自的规律运行,但是不管采取哪一种历法,总天数是不变的,转换算法的核心是先算出总的天数,然后再按照各自的规律进行推算,最终得出准确的日期。 从上面的历法介绍,我们知道公历在1582年10月5日之前指的是儒略历,1582年10月14日之后,指的是格里历,而1582年10月5日至10月14日之间的日期是不存在的。这是公历和回历转换过程需要注意的,因为儒略历的算法和格里历的算法是不同的。 3.3 公历转换回历 公历转换成回历分为三个步骤: 首先判断公历日期是否大于1582年10月14日。 其次,要计算出具体的总天数。当公历日期大于1582年10月14日时,采用格里历历法计算总天数。当公历日期小于1582年10月14日时,采用儒略历历法计算总天数。两种历法计算总天数的公式[2]如下: (注:转换前公历日期的年月日依次标记为Y、M、D) 格里历总天数={1461*[Y+4800+(M—14)/12]}/4+{367*[M—2—(M—14)]}/12—3*{[Y+4900+(M—14)/12]/100}/4+D —32075 儒略历总天数=367*Y—7*[Y+5001+(M—9)/7]/4+275*M/9+D+1729777 最后按照回历的历法规则推算出准确的日期。下面介绍一下推算的公式:(设整数变量L、J、S和N) L=总天数—1948440+10632 N=(L—1)/10631 J=[(10985—L)/5316]*[(50*L)/17719]+(L/5670)*[(43*L)/15238] S=L—[(30—J)/15]*[(17719*J)/50]—(J/16)*[(15238*J)/43]+29 转换后的回历日期年月日依次标记为整数变量H_Y、H_M和H_D H_Y=30*N+J—30 H_M=(24*S)/709 H_D=S—(709*H_M)/24 3.4 回历转换公历 回历转换成公历也分为三个步骤: 首先计算要转换回历日期所对应的儒略日总天数。回历日期计算儒略日数的公式如下:(注:转换前回历日期的年月日依次标记为HY、HM、HD。) 儒略日总天数=(11*HY+3)/30+354*HY+ 30*HM—(HM—1)/2+HD+1948440—385 其次要判断儒略日总天数是否大于2299160,这里的2299160是公历1582年10月4日所对应的儒略日总天数。 最后按照公历的历法进行推算出准确的公历日期。这里说明一下,当儒略日总天数大于2299160时采用格里历历法进行计算,否则采用儒略历历法
有哪些信誉好的足球投注网站
文档评论(0)