當前位置:編程學習大全網 - 源碼下載 - 求農歷轉公歷 公歷轉農歷 農歷轉公歷的程序 C++

求農歷轉公歷 公歷轉農歷 農歷轉公歷的程序 C++

void solar()

{

int nyear,nmonth,nday, gyear,gmonth,gday;

long int Ndata,c;

int wei=11,mt,nwhatday=0,runday,runmonth,nm,i,a,whatChunJie,ChunJieYear,zgwhatday,gyday,ms,cz,runt;

char YNrun;

system("cls");

cout<<"輸入需查詢的農歷年月日(例:2005 05 25)"<<endl;

cin>>nyear;

cin>>nmonth;

cin>>nday;

if(judge(gyear,gmonth,gday)==0){

cout<<"error date"<<endl;

return;

}

runday=(NongliData[nyear-1899]/0x1000)%0x10; //取出判斷閏月天數的值

runmonth=(NongliData[nyear-1899]/0x100)%0x10; //取出判斷是否閏月閏幾月的值

if(runday==1) runt=30;

else runt=29;

if(YNrun=='y')

nm=nmonth; //計算該月前面有幾個月

else nm=nmonth-1;//計算在該農歷年的第幾天

Ndata=NongliData[nyear-1899];

c=Ndata/0x10000;

wei=11;

while(wei>=0 && nm>0){

i=c>>wei&~(~0<<1);

if(i==1) mt=30;

else mt=29;

nwhatday=nwhatday+mt;

nm--;

wei--;

}

if(nmonth>runmonth && runmonth!=0){

nwhatday=nwhatday+runt;

}

nwhatday=nwhatday+nday;//計算該年春節在公歷年的第幾天

ChunJieYear=NongliData[nyear-1899];

a=ChunJieYear%0x100;

whatChunJie=gPastday[a/100]+a%100;

if((ChunJieYear%4==0 && ChunJieYear%100!=0 || ChunJieYear%400==0) && (a/100>2)) whatChunJie++;

zgwhatday=nwhatday+whatChunJie-1;//計算該公歷年壹年總天數

if(nyear%4==0 && nyear%100!=0 || nyear%400==0){

gyday=366;

months[2]=29;

}

else{

gyday=365;

months[2]=28;

}

//換算出公歷年份

if(zgwhatday>gyday){

gyear=nyear+1;

zgwhatday=zgwhatday-gyday;

}

else gyear=nyear;

//換算出公歷月份

ms=1;

cz=zgwhatday;

gmonth=0;

while(ms<13){

cz=cz-months[ms];

if(cz<=0) {

gmonth++;

gday=cz+months[ms];

break;

}

gmonth++;

ms++;

}

cout<<endl<<"由農歷轉換成公歷查詢結果如下"<<endl<<endl;

cout<<"農歷:"<< nyear<<"年"<<nmonth<<"月"<<nday<<"日"<<endl;

cout<<endl<<"公歷: (公元)"<<gyear<<"年"<<gmonth<<"月"<<gday<<"日"<<endl;

getch();

}

  • 上一篇:如何在CentOS上安裝並漢化Code:Blocks
  • 下一篇:小程序第三方平臺有哪些?
  • copyright 2024編程學習大全網