计算两个年月日之间的天数,思路是分别算出日期的总天数然后相减。
要考虑闰年的情况,判断闰年的口诀:4年一闰,100年不闰,400年再闰。
((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
网上找了一个(偷懒= =!),修改下如下:
#include
int sum(int y,int m,int d)
{
unsigned char x[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i,s=0;
for(i=1;i if(i%4==0 && i%100!=0 || i%400==0) s+=366;//闰年 else s+=365;//平年 if(y%4==0 && y%100!=0 || y%400==0) x[2]=29; for(i=1;i s+=x[i];//整月的天数 s+=d;//日的天数 return s;//返回总天数,相对公元1年 } void main() { unsigned char y1,m1,d1,y2,m2,d2; int s1,s2; printf("输入第一个年 月 日:"); scanf("%d %d %d",&y1,&m1,&d1); printf("输入第二个年 月 日:"); scanf("%d %d %d",&y2,&m2,&d2); s1=sum(y1,m1,d1); s2=sum(y2,m2,d2); if (s1 > s2) printf("相差天数:%ld\n",s1-s2); else printf("相差天数:%ld\n",s2-s1); } 以上代码VC6编译测试通过。
DateTime dt1 = Convert.ToDateTime(d1);
DateTime dt2 = Convert.ToDateTime(d2);
TimeSpan ts = dt1 - dt2;
int sub = ts.Days; //sub就是两天相差的天数