C语言求两个日期相差的天数

Python033

C语言求两个日期相差的天数,第1张

计算两个年月日之间的天数,思路是分别算出日期的总天数然后相减。

要考虑闰年的情况,判断闰年的口诀: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=1i<yi++)

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=1i<mi++)

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日的天数,然后相减

#include <time.h>

#include <stdio.h>

void main()

{

tm t1={0},t2={0}

t1.tm_year = 1999-1900

t1.tm_mon = 2-1

t1.tm_mday = 3

t2.tm_year = 2015-1900

t2.tm_mon = 5-1

t2.tm_mday = 4

time_t a1 = mktime(&t1)

time_t a2 = mktime(&t2)

printf("相差%d天", (a2-a1)/86400)

}

ps:看不懂了再追问

楼上的说的太麻烦了(真是傻瓜做法)//定义两个时间DateTime time1=Convert.ToDateTime("2006-05-23")DateTime time2=Convert.ToDateTime("2045-12-15")//计算间隔天数(精确到毫秒格式为“2222.22.22.2222”)TimeSpan span = (TimeSpan)(time2-time1)int result = Convert.ToInt32(Convert.ToString(span).SubString(0,Convert.ToString(span).IndexOf(".")))//result就是你要的天数