C语言中的time.h有没有函数可以计算出两日期间的天数

[复制链接]
查看11 | 回复1 | 2009-6-21 01:57:07 | 显示全部楼层 |阅读模式
的确没有,我自己写了一下,觉得还是有点繁的,代码此下:#include #define isPrime(year) ((year%4==0&&year%100!=0)||(year%400==0))struct date{int year;int month;int day;};int main(void){//int isPrime(int year);int dateDiff(struct date mindate,struct date maxdate);struct date mindate,maxdate;int days;printf("please input the one date:");scanf("%i-%i-%i",&mindate.year,&mindate.month,&mindate.day);printf("please input other day:");scanf("%i-%i-%i",&maxdate.year,&maxdate.month,&maxdate.day);days=dateDiff(mindate,maxdate);
printf("the day is:%d\n",days);
return 0;}int dateDiff(struct date mindate,struct date maxdate){int days=0,j,flag;const int primeMonth[][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};/************************************************************************//*
交换两个日期函数,将小的日期给mindate,将大的日期给maxdate
*/
/************************************************************************/struct date tmp;if ((mindate.year>maxdate.year)|| (mindate.year==maxdate.year&&mindate.month>maxdate.month)||(mindate.year==maxdate.year&&mindate.month==maxdate.month&&mindate.day>maxdate.day)){tmp=mindate;mindate=maxdate;maxdate=tmp;}
/************************************************************************/
/*从mindate.year开始累加到maxdate.year
*/
/************************************************************************/for(j=mindate.year;j<maxdate.year;++j)days+=isPrime(j)?366:365;//如果maxdate.year是闰年,则flag=1,后面调用primeMonth[1][12]flag=isPrime(maxdate.year);//加上maxdate.month到1月的天数for (j=1;j<maxdate.month;j++)days+=primeMonth[flag][j-1];//减去mindate.month到1月的天数for (j=1;j<mindate.month;j++)days-=primeMonth[flag][j-1];days=days+maxdate.day-mindate.day;return days;}详细请看我的Blog:http://blog.csdn.net/yueguanghaidao/article/details/7592274
回复

使用道具 举报

千问 | 2009-6-21 01:57:07 | 显示全部楼层
要自己计算的,有些书上有类似的例程,比如输入一个日期,求出该日是该年的第几天,或者求出第二天的日期
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行