万年历算法-转自《ARM嵌入式技术应用》.pdfVIP

万年历算法-转自《ARM嵌入式技术应用》.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

万年历算法-转自《ARM嵌入式技术应用》

万年历算法一、阳历算法具体算法见函数Void

get_solar_day_date(void),这样阳历日历的星期排法就确定了。

表1:月份123456789101112

闰年312931303130313130313031

非闰年312831303130313130313031变量定义:

Public:

Unsignedinttemp_total_day;

Unsignedchargc_solar_calendar_year;

Unsignedchargc_solar_calendar_month;

Unsignedchargc_solar_calendar_date;

Unsignedchargc_lunar_calendar_year;

Unsignedchargc_lunar_calendar_month;

Unsignedchargc_lunar_calendar_date;

Unsignedcharstart_day_of_week;说明:函数

get_solar_day_date(void)的输入变量:gc_solar_calendar_year

和gc_solar_calendar_month

输出变量:start_day_of_week和temp_total_day

Voidget_solar_day_date(void)

{

unsignedchartemp01;

/*calculatewhatdayisthedayofthecurrentmonthand

year.Mon~Sun?

*/

/*条件初始化二次,减少运算数据量.temp_total_day是int型变

量*/

start_day_of_week=2;temp_total_day=0;calculate_temp=1;

if(gc_solar_calendar_year99)

{start_day_of_week=6;calculate_temp=100;}

for(temp01=calculate_temp;temp01gc_solar_calendar_year;

temp01++)

{if(temp01%4==0){start_day_of_week+=2;temp_total_day

+=366;}

else{start_day_of_week+=1;temp_total_day+=365;}}

for(temp01=1;temp01gc_solar_calendar_month;temp01++)

{switch(temp01)

{case1,3,5,7,8,10,12:start_day_of_week+=3;temp_total_day

+=31;break;

case2:if(((gc_solar_calendar_year%4)==

0)(gc_solar_calendar_year!=200)){start_day_of_week+=1;

temp_total_day+=29;}

else{start_day_of_week+=0;temp_total_day+=28;}break;case

4,6,9,11:start_day_of_week+=2;temp_total_day+=30;break;}}

start_day_of_week%=7;

/*-endofcalculatewhatdayistheday(Mon~Sun?)andtotalday-

-*/

}二、阴历算法

200年需要200X2=400个字节,构成阴历压缩数据表

lunar_calendar_month_table[]如下:

constcharlunar_calendar_month_table[]={//从阴历年1900年

到2100年

/*thetotaldayofeachmonthpointer*/

/*from1901~2100*/

/*(0110)110000001001(0110)leapmonth,110000001001

lunarmonthtotalday:1:290:3

文档评论(0)

lg44556677 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档