标题:关于求两个日期之间相距的天数,C/C++
只看楼主
xiuye1987
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-9-18
 问题点数:0 回复次数:2 
关于求两个日期之间相距的天数,C/C++
我的程序达不到预期的效果,麻烦大家帮我看一下了,谢谢!
#include<iostream>
using namespace std;
struct Day
{
int year;
int month;
int day;
}x,y;
void Ready()
{
cout<<"请输入一个日期:"<<endl;
cin>>x.year>>x.month>>x.day;
cout<<"请输入一个日期:"<<endl;
cin>>y.year>>y.month>>y.day;
}
double SW(int month,double days)
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:days+=31;break;
case 4:
case 6:
case 9:
case 11:days+=30;break;
case 2:days+=28;break;
default:cout<<"Error!"<<endl;break;
}
return days;
}
double Days(Day x,Day y)
{

int i;
double days=y.day;
days-=x.day;
if((x.year==y.year)&&(x.month==y.month)&&(x.day==y.day))
return 0;
if(x.year>y.year||((x.year==y.year)&&(x.month>y.month))||((x.year==y.year)&&(x.month==y.month)&&(x.day>y.day)))
{
if((x.year%400==0||(x.year%100!=0&&x.year%4==0))&&x.month<=2)
days++;
for(i=x.month;i<=12;i++)
days=SW(i,days);
if(x.year-y.year>1)
for(i=x.year+1;i<y.year;i++)
if(i%400==0||(i%100!=0&&i%4==0))
days+=366;
else
days+=365;
return days;
}
else
return Days(y,x);
}
void Show(double n)
{
cout<<n<<endl;
}
void main()
{
Ready();
Show(Days(x,y));
}
搜索更多相关主题的帖子: 天数 相距 
2007-09-24 08:28
xiuye1987
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-9-18
得分:0 
回复:(xiuye1987)关于求两个日期之间相距的天数,C...
我十分三段计算的
1 加上起始年剩下的天数(包括剩下的月份与起始月剩下的天数)
2 加上中间所有完整年的天数(x.year+1....y.year-1)
3 最后加上末尾年已经过的天数(包括已过的月份于已过的天数)

2007-09-24 22:24
xiuye1987
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-9-18
得分:0 
回复:(xiuye1987)关于求两个日期之间相距的天数,C...
问题已经解决。。

2007-09-25 16:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-172391-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.589541 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved