本文目录
农历转阳历查询
农历是1976年8月26日的阳历是1976年9月19日
1960年10月28日阳历是1960年12月16日
求农历转公历 公历转农历 农历转公历的程序 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/0x1000)%0x10; //取出判断闰月天数的值
runmonth=(NongliData/0x100)%0x10; //取出判断是否闰月闰几月的值
if(runday==1) runt=30;
else runt=29;
if(YNrun==’y’)
nm=nmonth; //计算该月前面有几个月
else nm=nmonth-1;//计算在该农历年的第几天
Ndata=NongliData;
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;
a=ChunJieYear%0x100;
whatChunJie=gPastday+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=29;
}
else{
gyday=365;
months=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;
if(cz《=0) {
gmonth++;
gday=cz+months;
break;
}
gmonth++;
ms++;
}
cout《《endl《《“由农历转换成公历查询结果如下“《《endl《《endl;
cout《《“农历:“《《 nyear《《“年“《《nmonth《《“月“《《nday《《“日“《《endl;
cout《《endl《《“公历: (公元)“《《gyear《《“年“《《gmonth《《“月“《《gday《《“日“《《endl;
getch();
}