波斯日历与公历转换算法.docx

上传人:b****8 文档编号:11175874 上传时间:2023-02-25 格式:DOCX 页数:18 大小:15.59KB
下载 相关 举报
波斯日历与公历转换算法.docx_第1页
第1页 / 共18页
波斯日历与公历转换算法.docx_第2页
第2页 / 共18页
波斯日历与公历转换算法.docx_第3页
第3页 / 共18页
波斯日历与公历转换算法.docx_第4页
第4页 / 共18页
波斯日历与公历转换算法.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

波斯日历与公历转换算法.docx

《波斯日历与公历转换算法.docx》由会员分享,可在线阅读,更多相关《波斯日历与公历转换算法.docx(18页珍藏版)》请在冰豆网上搜索。

波斯日历与公历转换算法.docx

波斯日历与公历转换算法

#ifDISPLAY_FARSI_CALENDAR

typedefstruct{

MS_U8weekday;

MS_U8day;

MS_U8month;

MS_U16year;

}Date_time;

staticMS_BOOLMApp_IsPersianYearLeap(MS_U32year)

{

return((((((year-((year>0)?

474:

473))%2820)+474)+38)*682)%2816)<682;}

MS_U8MApp_GetIranDaysOfMonth(MS_U16u16Year,MS_U8u8Month)

{

if(u8Month>=1&&u8Month<=12){

return((MApp_IsPersianYearLeap(u16Year)&&u8Month==12)?

30IranSolarMonth[u8Month-1]);

}

else{

return0;

}

}

//ConvertMJDtoJalali

intOutDateLeap(Date_time*des)

{

MS_U8D,M;

MS_U16Y;

MS_U8r=0,m=0;

D=des->day;

M=des->month;

Y=des->year;

MS_U8R;

//R=D;//Jamieshielded

MS_U16inty;

MS_U16x12=0;//x12年

if(Y>2059){

des->year=2059;

}

if(M>12){:

des->month=12;

}

if(D>MApp_GetDaysOfThisMonth(des->year,des->month)){

des->day=MApp_GetDaysOfThisMonth(des->year,des->month);

}

R=des->day;

if(M==1||M==2)

x12=622;

elseif(M==3&&R<20)//31k

x12=622;

else

x12=621;

inty=Y-x12;//inty年1386年

MS_U16xxx=1379,i=0;//xxx年

BOOLm_ok;

do{

i++;

if(inty==xxx){

m_ok=TRUE;

break;

}

else{

m_ok=FALSE;

xxx=xxx+4;//

}

}while(i<30);//30次

if(m_ok==TRUE){

if(R<31&&M==1)

R++;

elseif(R<28&&M==2)

R++;

elseif(R<31&&M==3)

R++;

elseif(R<30&&M==4)

R++;

elseif(R<31&&M==5)

R++;

elseif(R<30&&M==6)

}R++;

elseif(R<31&&M==7)

R++;

elseif(R<31&&M==8)

R++;

elseif(R<30&&M==9)

R++;

elseif(R<31&&M==10)

R++;

elseif(R<30&&M==11)

R++;

elseif(R<31&&M==12)

R++;

else{

R=1;

M++;

}

//endifcabise

if(M==1&&R<21){

r=R+10;

m=10;

}

elseif(M==1&&R>=21){

r=R-20;

m=11;

}

elseif(M==2&&R<20){

r=R+11;

m=11;

}

elseif(M==2&&R>=20){

r=R-19;

m=12;

}

elseif(M==3&&R<21){

r=R+9;

m=12;

}

elseif(M==3&&R>=21){

r=R-20;

m=1;

}

elseif(M==4&&R<21){

r=R+11;

m=1;

}

elseif(M==4&&R>=21){

r=R-20;

m=2;

}

elseif(M==5&&R<22){

r=R+10;

m=2;

}

elseif(M==5&&R>=22){

r=R-21;

m=3;

}

elseif(M==6&&R<22){

r=R+10;

m=3;

}

elseif(M==6&&R>=22){

r=R-21;

m=4;

}

elseif(M==7&&R<23){

r=R+9;

m=4;

}

elseif(M==7&&R>=23){

r=R-22;

m=5;

}

elseif(M==8&&R<23){

r=R+9;

m=5;

}

elseif(M==8&&R>=23){

r=R-22;

m=6;

}

elseif(M==9&&R<23){

r=R+9;

m=6;

}

elseif(M==9&&R>=23){

}r=R-22;

m=7;

}

elseif(M==10&&R<23){

r=R+8;

m=7;

}

elseif(M==10&&R>=23){

r=R-22;

m=8;

}

elseif(M==11&&R<22){

r=R+9;

m=8;

}

elseif(M==11&&R>=22){

r=R-21;

m=9;

}

elseif(M==12&&R<22){

r=R+9;

m=9;

}

elseif(M==12&&R>=22){

r=R-21;

m=10;

}

intx=0;

if(M==1||M==2)

x=622;

elseif(M==3&&R<=20)//31

x=622;

else

x=621;

Y=Y-x;

des->day=r;//returnDay

des->month=m;//returnmonth

des->year=Y;//returnYear

returnTRUE;

staticintOutDateGregorian_k(Date_time*des)//<>what==>0Day1Month2Year

{

MS_U8D,M;

MS_U16Y;

//***********************

D=des->day;

M=des->month;

Y=des->year;

MS_U8m=0,r=0;

MS_U8R=0;

R=D;

if(M==1&&R<13){

m=3;

r=R+19;

}

elseif(M==1&&R>=13){

m=4;

r=R-12;

}

if(M==2&&R<12){

m=4;

r=R+19;

}

elseif(M==2&&R>=12){

m=5;

r=R-11;

}

if(M==3&&R<12){

m=5;

r=R+20;

}

elseif(M==3&&R>=12){

m=6;

r=R-11;

}

if(M==4&&R<11){

m=6;

r=R+20;

}

elseif(M==4&&R>=11){

}m=7;

r=R-10;

if(M==5&&R<11){

m=7;

r=R+21;

}

elseif(M==5&&R>=11){

m=8;

r=R-10;

}

if(M==6&&R<11){

m=8;

r=R+21;

}

elseif(M==6&&R>=11){

m=9;

r=R-10;

}

if(M==7&&R<10){

m=9;

r=R+21;

}

elseif(M==7&&R>=10){

m=10;

r=R-9;

}

if(M==8&&R<11){

m=11;

r=R+21;

}

elseif(M==8&&R>=11){

m=12;

r=R-10;

}

if(M==9&&R<11){

m=11;

r=R+20;

}

elseif(M==9&&R>=11){

m=12;

r=R-10;

}

//-----------

Y=Y+621;

if(M==10&&R<12){

m=12;

r=R+20;

//Y++;

}

elseif(M==10&&R>=12){

m=1;

r=R-11;

Y++;

}

if(M==11&&R<13){

m=1;

r=R+19;

Y++;

}

elseif(M==11&&R>=13){

m=2;

r=R-12;

Y++;

}

if(M==12&&R<11){

m=2;

r=R+18;

Y++;

}

elseif(M==12&&R>=11){

m=3;

r=R-10;

Y++;

}

des->day=r;//returnDay

des->month=m;//returnmonth

des->year=Y;//returnYear

returnTRUE;

}

intOutDateGregorian(Date_time*des)//what==>0Day1Month2Year

{

MS_U8D,M;

MS_U16Y;

//***********************

D=des->day;

M=des->month;

Y=des->year;

MS_U8m=0,r=0;

MS_U8R=0;

/*

//printf("M=%dD=%dY=%d\n",M,D,Y);

if(Y>2059){

des->year=2059;//returnYear

returnFALSE;

}

if(M>12){

des->month=12;//returnmonth

}

if(D>MApp_GetIranDaysOfMonth()){

des->day=31;//returnDay

}

*/

intinty=Y;

intxxx=1379,i=0;

BOOLm_ok;

do{

i++;

if(inty==xxx){

m_ok=TRUE;

break;

}

else{

m_ok=FALSE;

xxx=xxx+4;//----------忧?

呷碛?

逖嶅茄忧?

磉惹?

----

}

}while(i<30);

if(m_ok==TRUE){

}returnOutDateGregorian_k(des);

R=D;

if(M==1&&R<12){

m=3;

r=R+20;

}

elseif(M==1&&R>=12){

m=4;

r=R-11;

}

if(M==2&&R<11){

m=4;

r=R+20;

}

elseif(M==2&&R>=11){

m=5;

r=R-10;

}

if(M==3&&R<11){

m=5;

r=R+21;

}

elseif(M==3&&R>=11){

m=6;

r=R-10;

}

if(M==4&&R<10){

m=6;

r=R+21;

}

elseif(M==4&&R>=10){

m=7;

r=R-9;

}

if(M==5&&R<10){

m=7;

r=R+22;

}

elseif(M==5&&R>=10){

m=8;

r=R-9;

}

if(M==6&&R<10){

m=8;

r=R+22;

}

elseif(M==6&&R>=10){

m=9;

r=R-9;

}

if(M==7&&R<9){

m=9;

r=R+22;

}

elseif(M==7&&R>=9){

m=10;

r=R-8;

}

if(M==8&&R<10){

m=11;

r=R+22;

}

elseif(M==8&&R>=10){

m=12;

r=R-9;

}

if(M==9&&R<10){

m=11;

r=R+21;

}

elseif(M==9&&R>=10){

m=12;

r=R-9;

}

//-----------

Y=Y+621;

if(M==10&&R<11)

{

m=12;

r=R+21;

//Y++;

}

elseif(M==10&&R>=11)

{

m=1;

r=R-10;

Y++;

}

if(M==11&&R<12){

m=1;

r=R+20;

Y++;

}

elseif(M==11&&R>=12){

m=2;

r=R-11;

Y++;

}

if(M==12&&R<10){

m=2;

r=R+19;

Y++;

}

elseif(M==12&&R>=10){

m=3;

r=R-9;

Y++;

}

des->day=r;//returnDay

des->month=m;//returnmonth

des->year=Y;//returnYear

returnTRUE;

}

#endif

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1