日历计算天数少了
我写了一个简单的公历和伊斯兰日历转换的程序,计算天数结果少了几天。日期越往后少的越多,是不是闰年计算有问题。代码在下面。
计算公历天数的:
for(i=623;i<csy;i++) { if(i<1582) //1582年之前的计算 { if(i%4 == 0) { leapy = 366; } else { leapy = 365; } } if(i>=1582) //1582年之后的计算 { if(i%400 == 0 || (i%4 == 0 && i%100 != 0)) { leapy = 366; } else { leapy = 365; } }if(csy>=1582)//sldaycount和sdaycount是两个数组,存的每月底之前的总天数,csy是要转换的年,csm是要转换的月,csd是要转换的天, { if(csy%400 == 0 || (csy%4 == 0 && csy%100 != 0)) md = sldaycount[csm-1] + csd; else md = sdaycount[csm-1] + csd; } else { if(csy%4 == 0) md = sldaycount[csm-1] + csd; else md = sdaycount[csm-1] + csd; } if(csy >= 1582) day = yd + md + preday - 10;//计算总共天数 else day = yd + md + preday;for(i= 0; li<ld; i++) { iy = leapyear(i%30+1); li = li + iy; }leapyear()int ycount=0; //每年天数 // static int i=0; switch(iremain) { case 2: case 5: case 7: case 10: case 13: case 16: case 18: case 21: case 24: case 26: case 29: ycount = 355; break; default: ycount = 354; break; } return ycount;