C/C++实现日期计算器的示例代码实现日期计算器的示例代码
本篇文章主要介绍了C/C++实现日期计算器的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参
考。一起跟随小编过来看看吧
问题介绍问题介绍:
今天突然看到一个问题看起来蛮有趣的,跟大家分享一下. 给定任意日期对该日期进行加减天数,最后得出加减后出现的日期.
以及给两个日期你可以得出他们两个之间相隔多少天.(需要考虑闰年,每个月天数不同,我们需要写一个我们直接可以使用的
日期加减器)因为时间比较仓促,我也没有写界面,只有其中几个主要的函数的架构思想以及简单的调试就发出来了.
代码实现:
#include<iostream>
#include<Windows.h>
#include<assert.h>
using namespace std;
class Date
{
public:
Date(int year = 1997,int month = 1,int day = 1)
:years(year)
, months(month)
, days(day)
{
assert(IScorrect());
}
Date& operator=(const Date& d)
{
if (this != &d)
{
years = d.years;
months = d.months;
days = d.days;
}
return *this;
}
Date& operator + (int day)
{
while (day > 365)
{
if (ISleapyear() && day > 366)
{
years++;
day = day - 366;
}
else
{
years++;
day = day - 365;
}
}
while (day >= Getmonthsday())
{
//注意这里的次序问题,一定先减 再加 最后再判断. 如果顺序错了会出BUG的.
day = day - Getmonthsday();
months++;
if (months > 12)
{
years++;
months = 1;
}
}
while (day > 0)
{
DateAdvance();
day = day - 1;
days++;
}
return *this;
}