扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
#includestdio.h
创新互联建站专业为企业提供石龙网站建设、石龙做网站、石龙网站设计、石龙网站制作等企业网站建设、网页设计与制作、石龙企业网站模板建站服务,10多年石龙做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
int days(int y,int m,int d)
{int i,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(y1||m1||d1||da[m]+(y%4==0y%1000||y%400==0))
{printf("%d-%d-%d不是一个有效的日期!\n",y,m,d);
return -1;
}
for(i=1;im;i++)
d+=a[i];
return d;
}
int main()
{int year,month,day,answer;
printf("请输入一个日期yyyy-mm-dd\n");
scanf("%d-%d-%d",year,month,day);
answer=days(year,month,day);
if(answer0)
printf("%d-%d-%d 是该年的第 %d 天.\n",year,month,day,answer);
getch();
return 0;
}
int GetMonthDays(int year,int month)
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
break;
case 4:
case 6:
case 9:
case 11:
return 30;
break;
case 2:
if((year%4==0 year%100!=0 ) || (year%400==0))
{
return 29;
}
else
{
return 28;
}
break;
default:
printf("month error!");
return 0;
break;
}
}
#include stdio.h
#include stdlib.h
#include string.h
#include math.h
#include time.h
int get_days(const char* from, const char* to);
time_t convert(int year,int month,int day);
int main()
{
const char* from="2013-3-15";
const char* to="2015-8-14";
int days=get_days(from,to);
printf("From:%s\nTo:%s\n",from,to);
printf("%d\n",days);
return 0;
}
time_t convert(int year,int month,int day)
{
struct tm info={0};
info.tm_year=year-1900;
info.tm_mon=month-1;
info.tm_mday=day;
return mktime(info);
}
int get_days(const char* from, const char* to)
{
int year,month,day,fromSecond,toSecond;
sscanf(from,"%d-%d-%d",year,month,day);
fromSecond=(int)convert(year,month,day);
sscanf(to,"%d-%d-%d",year,month,day);
toSecond=(int)convert(year,month,day);
return (toSecond-fromSecond)/24/3600;
}
From:2013-3-15
To:2015-8-14
882
Press any key to continue
这才算是用了库函数了···
#include stdio.h
const int days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
struct Date
{
int year, month, day;
};
int DateCmp(Date a, Date b)
{
if (a.year != b.year)
return a.year b.year;
if (b.month != a.month)
return a.month b.month;
return a.day b.day;
}
int isLunar(int year)
{
return year % 400 == 0 || (year % 100 year % 4 == 0);
}
int DateDistace(Date a, Date b)
{
if (DateCmp(a, b))//保证a小于b
{
Date t = b;
b = a;
a = t;
}
//计算结果存储在res中
//首先计算相差的年
int i = a.year + 1, j = b.year - 1, res = a.year == b.year ? 0 : (j - i + 1) * 365;
for (int ii = (i + 3) / 4 * 4, jj = j / 4 * 4;ii = jj;ii += 4, res++);
for (int ii = (i + 99) / 100 * 100, jj = j / 100 * 100;ii = jj;ii += 100, res--);
for (int ii = (i + 399) / 400 * 400, jj = j / 400 * 400;ii = jj;ii += 400, res++);
//然后计算相差的月
if (a.year != b.year)
{
for (int ii = a.month + 1;ii = 12;ii++)
res += ii == 2 ? 28 + isLunar(a.year) : days[ii];
for (int ii = 1;ii = b.month - 1;ii++)
res += ii == 2 ? 28 + isLunar(b.year) : days[ii];
}
else
{
for (int ii = a.month + 1;ii b.month;ii++)
res += ii == 2 ? 28 + isLunar(a.year) : days[ii];
}
//最后计算相差的日
if (a.year != b.year || a.month != b.month)
{
res += (a.month == 2 ? 28 + isLunar(a.year) : days[a.month]) - a.day + b.day;
}
else
{
res += b.day - a.day;
}
return res;
}
int main()
{
Date a, b;
a.year = 2000; a.month = 12; a.day = 31;
b.year = 1000; b.month = 1; b.day = 1;
printf("%d\n", DateDistace(b, a));
return 0;
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流