您的位置:首页 > 其它

设计一个程序输入两个日期计算相隔多少天,或计算一个日期加上间隔后的日期。

2017-02-24 18:14 351 查看
设计一个程序能计算日期的间隔,如输入两个日期别为2008-2-3 和 2008-3-9 计算相隔多少天,或2008-2-3加上间隔天数之后的日期。

题目不难,但是老是想的不全面,改了无数次了。。。

1.计算两个日期相隔的天数。

1).首先判断是不是同一年,如果是同一年,判断是否是闰年,如果是闰年,判断包不包括二月份....2).之后判断是否是同一个月,

2.一个日期加上间隔天数之后的日期。

首先判断是不是闰年以及二月份,如果是则--day,之后年数加一,继续判断,

#include <iostream>
using namespace std;
bool isleapyear(int y)
{
return ((y % 4 == 0 && y % 100 != 0 )|| y % 400 == 0);
}
int sum(int y1, int m1, int d1,int y2, int m2, int d2)
{
int md[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
//假设从0年开始,也就是你不知道的第一天, 比如求x-y就等于求(x-0)-(y-0)
int count=0,temp=m1;
if(y1==y2&&m1==m2)
count+=d2-d1;
else
{
for(int i=y1;i<y2;)
{
if (temp==2 && isleapyear(i))
count++;
count+=md[temp]-d1;
d1=0;
temp++;
//cout<<count<<" "<<temp<<" "<<md[temp]<<endl;
if(temp==13)
{
i++;
temp=1;
}
/*if (temp==2 && isleapyear(i))
md[temp]++; */
}
while(temp<m2)
{
count+=md[temp];
++temp;
}
count+=d2;
}
return count;
}
int main()
{
int y1,y2,m1,m2,d1,d2,key,y,m,d;

while(1){
cout<<"请输入功能:1.计算两个日期之间的时间间隔;2.计算一个日期加上间隔天后的日期。"<<endl;
cin>>key;
if(key==1)
{
cout<<"请输入起始日期:"<<endl;
cin>>y1>>m1>>d1;
cout<<"请输入终止日期:"<<endl;
cin>>y2>>m2>>d2;
cout<<sum(y1, m1, d1, y2, m2, d2)<<endl;
}
if(key==2)
{
int md[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
//假设从0年开始,也就是你不知道的第一天, 比如求x-y就等于求(x-0)-(y-0)
cout<<"请输入日期:"<<endl;
cin>>y>>m>>d;
cout<<"请输入间隔:"<<endl;
int day;
cin>>day;
cout<<"加上"<<day<<"天,结果:"<<endl;
int temp1=y;
if (m==2 && isleapyear(y))
--day;
while(day>md[m]-d)
{
day-=md[m]-d;
d=0;
m++;
//cout<<day<<" "<<m<<" "<<md[m]<<endl;
if(m==13)
{
++temp1;
m=1;
}
if (m==2 && isleapyear(temp1)&&day>28)
--day;
//md[m]++;
}
d+=day;
cout<<temp1<<" "<<m<<" "<<d<<endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐