歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C語言計算兩個日期之間的天數

C語言計算兩個日期之間的天數

日期:2017/3/1 9:48:46   编辑:Linux編程

計算兩個年月日之間的天數,思路是分別算出日期的總天數然後相減。

要考慮閏年的情況,判斷閏年的口訣:4年一閏,100年不閏,400年再閏。
((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)

網上找了一個(偷懶= =!),修改下如下:
#include <stdio.h>
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<y;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<m;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編譯測試通過。

雖然這個思路顯得有些笨,但是其它算法,代碼太長太復雜,要考慮多種情況,不如直接算兩個日期距離公元元年1月1日的天數,然後相減。

Copyright © Linux教程網 All Rights Reserved