//////////////////////////////////////////////////////////////////////////////////////////////////////
//该程序是计算任意两个日期之间的天数,程序思路为:先计算各个日期在当年的天数,再加上两年份之间的天数//
//////////////////////////////////////////////////////////////////////////////////////////////////////
#include <stdio.h>
bool LeapYear(int year); //闰年计算
int DayInThisYear(int year,int month,int day); //验证日期合格和计算该日期在当年的天数
int Betweendate(int Days_1,int Days_2,int year_1,int year_2); //计算两日期之间天数
//////////////////////////////////////////////////////////////
int main(void)
{
int year_1,month_1,day_1,year_2,month_2,day_2,Days_1,Days_2;
printf("FirstDate date(yyyy-mm-dd):");
scanf("%d-%d-%d",&year_1,&month_1,&day_1);
printf("SecondDate date(yyyy-mm-dd):");
scanf("%d-%d-%d",&year_2,&month_2,&day_2);
if((Days_1=DayInThisYear(year_1,month_1,day_1))!=-1&&(Days_2=DayInThisYear(year_2,month_2,day_2))!=-1)
printf("%d-%d-%d到%d-%d-%d天数为%d\n",\
year_1,month_1,day_1,year_2,month_2,day_2,Betweendate(Days_1,Days_2,year_1,year_2));
else
printf("输入的日期格式有误\n");
return 1;
}
////////////////////////////////////////////////////////////
bool LeapYear(int year) //闰年计算
{
return (year%4==0&&year%100!=0||year%400==0);
}
////////////////////////////////////////////////////////////
int DayInThisYear(int year,int month,int day) //验证日期合格和计算该日期在当年的天数
{
int monthdate[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(LeapYear(year))
monthdate[1]=29;
if(year>0&&month>0&&month<=12&&day>0&&day<=monthdate[month]) //验证日期
{
for(int i=0;i<month-1;i++)
day+=monthdate[i];
}
else
return -1;
return day;
}
/////////////////////////////////////////////////////////////
int Betweendate(int Days_1,int Days_2,int year_1,int year_2) //计算两日期之间天数
{
int temp,day;
if(year_1==year_2) //年份相同的情况下为两个日期在当年的天数之差
return Days_1>Days_2 ? Days_1-Days_2 : Days_2-Days_1;
else
{
if(year_1<year_2) //将year_1置为较大的年份,year_2置为较小的年份
{
temp=year_1;
year_1=year_2;
year_2=temp;
}
if(LeapYear(year_2)) //计算较小年份在当年余下的天数
day=366-Days_2;
else
day=365-Days_2;
for(;year_2+1!=year_1;year_2++) //计算两年份之间的天数
{
if(LeapYear(year_2))
day+=366;
else
{
day+=365;
}
}
}
return day+Days_1; //结果加上较大年份的日期
}
///////////////////----By huaixiaozizhuaizhuai Neusoft----//////////////////////
本文来源:https://www.wddqw.com/doc/4df0c7732af90242a995e558.html
正在阅读:
计算两日期之间的天数01-01
烟花美文优美散文:烟花01-01
小学语文课文《月光曲》01-01
管理学必读书籍01-01
初二游记作文:杭州西湖游记800字01-01
案例分析报告及案例分析报告格式样本01-01
“动词+味”定语结构的语义特征和语法特征01-01
男人最爱听的话:赞美男人的8句话01-01