发布网友 发布时间:2022-04-20 13:14
共3个回答
热心网友 时间:2023-11-03 06:52
的确没有,我自己写了一下,觉得还是有点繁的,代码此下:
#include <stdio.h>
#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/yueguanghai/article/details/7592274
热心网友 时间:2023-11-03 06:52
没有,都是计算日历时间和当地时间的,已经两者之间的转换。
热心网友 时间:2023-11-03 06:53
要自己计算的,有些书上有类似的例程,比如输入一个日期,求出该日是该年的第几天,或者求出第二天的日期