【C++】日期类+日期万年历+日期计算器-创新互联
对于日期类,我们主要实现一下日期类的基本函数,构造,拷贝构造,运算符的重载,析构。当然这里运算符的重载需要实现的还是挺多的,如:=、<、>、<=、>=、等

#includeusing namespace std; class Date { public: Date(int year = 1990, int month = 1, int day = 1) { _year = year; _month = month; _day = day; } Date(const Date& d) { _year = d._year; _month = d._month; _day = d._day; } ~Date() {} //万年历 bool operator == (const Date& d) { return this->_year == d._year && this->_month == d._month && this->_day == d._day; } bool operator <(const Date& d) { if (_year d); } bool operator >(const Date& d) { if (_year>d._year) { return true; } else { if (_year == d._year) { if (_month > d._month) { return true; } else { if (_month == d._month) { if (_day > d._day) { return true; } } } } } return false; } bool operator >=(const Date& d) { return !(*this < d); }
对于实现日期计算器,我们主要考虑的是加天数和减天数,那么问题就来了,对于加法,如果加的日期超过当前月的天数就需要考虑月的进位,对于年来说,如果月份大于12就需要重置为1,年进位。还需要考虑的一个问题就是,是否为闰年的2月份天数不同,那么应该如何解决呢?我们用一个数组把每个月的天数给保存起来,然后写一个判断闰年的函数,如果是闰年就在数组对应的2月上加上1天。对于减法,就相当于加上一个负天数,问题和加法一样。
// 日期计算器
Date operator+ (int day);
Date operator+= (int day);
Date operator- (int day)
{
this->_day -= day;
while (_day < 0)
{
_day += GetMonthDay(2016, 3);
_month -= 1;
if (_month < 1)
{
_month = 12;
_year -= 1;
}
}
return *this;
}
Date operator-= (int day);
Date operator++();
Date operator++(int);
Date operator--();
Date operator--(int);
int operator-(const Date& d);
//计算器
Date& calendar(int day = 0)
{
if (day > 0)//加正天数
{
this->_day += day;
while (_day > GetMonthDay(2016, 2))
{
_day -= GetMonthDay(2016, 2);
_month += 1;
if (_month > 12)
{
_month = 1;
_year += 1;
}
}
}
else//加负天数
{
this->_day -= day;
while (_day < 0)
{
_day += GetMonthDay(2016, 3);
_month -= 1;
if (_month < 1)
{
_month = 12;
_year -= 1;
}
}
}
return *this;
}
private:
bool IsLeapYear(int year)
{
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
{
return true;
}
return false;
}
int GetMonthDay(int year, int month)
{
int monthArray[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int day = monthArray[month];
if (month == 2 && IsLeapYear(year))
{
day += 1;
}
return day;
}
private:
int _year;
int _month;
int _day;另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
新闻标题:【C++】日期类+日期万年历+日期计算器-创新互联
当前地址:http://www.jxjierui.cn/article/dhhigs.html


咨询
建站咨询
