c++ 知相隔天数求日期 10
我是新手,求帮助;已知一个日期求加或减某天数后的日期;能有具体代码最好,或者vs自带的类/函数也行(具体用法)...
我是新手,求帮助;
已知一个日期求加或减某天数后的日期;
能有具体代码最好,或者vs自带的类/函数也行(具体用法) 展开
已知一个日期求加或减某天数后的日期;
能有具体代码最好,或者vs自带的类/函数也行(具体用法) 展开
2个回答
展开全部
给你一个已知两个日期求相隔天数的代码。
思路是这样的,以元年1月1日为标准,求出之后每天距离元年1月1日的天数存在数组里。
你改一下就能变成一直天数求日期。
#include <iostream>
using namespace std;
#define ISYEAP(x) (x)%100!=0&&(x)%4==0||(x)%400==0?1:0 //判断是否为闰年
int dayOfMoth[13][2]={ //每个月有多少天
0,0, //分为是否为闰年两种情况
31,31,
28,29,
31,31,
30,30,
31,31,
30,30,
31,31,
31,31,
30,30,
31,31,
30,30,
31,31
};
struct Date
{
int year;
int moth;
int day;
void nextDay() //求下一天的日期
{
day++;
if(day>dayOfMoth[moth][ISYEAP(year)])
{
day=1;
moth++;
if(moth>12)
{
moth=1;
year++;
}
}
}
};
int buf[5001][13][32]; //buf[年][月][日] 存该天距离0年1月1 //日有多少天
int main()
{
struct Date date={0,1,1},date1,date2;
int d1,d2;
int count=0;
int ans;
int a,b;
while(date.year!=5001)
{
buf[date.year][date.moth][date.day]=count;
date.nextDay();
count++;
}
while(cin>>d1)
{
cin>>d2;
a=buf[d1/10000][d1%10000/100][d1%100]; //输入格式为20140315
b=buf[d2/10000][d2%10000/100][d2%100];
ans=a-b;
if(ans<0)
ans=ans*(-1);
ans++;
cout<<ans<<endl;
};
return 0;
}
思路是这样的,以元年1月1日为标准,求出之后每天距离元年1月1日的天数存在数组里。
你改一下就能变成一直天数求日期。
#include <iostream>
using namespace std;
#define ISYEAP(x) (x)%100!=0&&(x)%4==0||(x)%400==0?1:0 //判断是否为闰年
int dayOfMoth[13][2]={ //每个月有多少天
0,0, //分为是否为闰年两种情况
31,31,
28,29,
31,31,
30,30,
31,31,
30,30,
31,31,
31,31,
30,30,
31,31,
30,30,
31,31
};
struct Date
{
int year;
int moth;
int day;
void nextDay() //求下一天的日期
{
day++;
if(day>dayOfMoth[moth][ISYEAP(year)])
{
day=1;
moth++;
if(moth>12)
{
moth=1;
year++;
}
}
}
};
int buf[5001][13][32]; //buf[年][月][日] 存该天距离0年1月1 //日有多少天
int main()
{
struct Date date={0,1,1},date1,date2;
int d1,d2;
int count=0;
int ans;
int a,b;
while(date.year!=5001)
{
buf[date.year][date.moth][date.day]=count;
date.nextDay();
count++;
}
while(cin>>d1)
{
cin>>d2;
a=buf[d1/10000][d1%10000/100][d1%100]; //输入格式为20140315
b=buf[d2/10000][d2%10000/100][d2%100];
ans=a-b;
if(ans<0)
ans=ans*(-1);
ans++;
cout<<ans<<endl;
};
return 0;
}
追问
如何改实现减天数求日期
追答
方法1:跟据日期1,计算出日期二距离元年1月1日的天数,然后遍历数组。
方法2: 依照nextday方法,写一个计算前一天日期的方法,利用这两个函数,写一个循环
for(i=0;i<n;i++)
x.nextday。 还有其他的思路你可以自己想想。
展开全部
#include <time.h>
#include <iostream>
using namespace std;
int main(void)
{
time_t ltime;
char buf[26];
time(<ime);
cout<<"请输入加减天数(减天数加负号)"<<endl;
int n = 0;
cin >> n;
ltime += n * 60 * 60 * 24;
ctime_s(buf, 26, <ime);
cout<< buf<<endl;
}
#include <iostream>
using namespace std;
int main(void)
{
time_t ltime;
char buf[26];
time(<ime);
cout<<"请输入加减天数(减天数加负号)"<<endl;
int n = 0;
cin >> n;
ltime += n * 60 * 60 * 24;
ctime_s(buf, 26, <ime);
cout<< buf<<endl;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询