实现一个c++的日期类
本文章向大家介绍C++实现日期类(Date类)的方法,主要包括C++实现日期类(Date类)的方法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。 其中日期有年月日,可以实现日期的比较,日期的加减,日期的拷贝构造,日期的构造。
#include<iostream>
using namespace std;
class Date
{
public:
int GetMonDay(int year ,int month)
{
int arr[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (month == 2 && ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)))
{
return 29;
}
return arr[month];
}
Date(int year = 0, int month = 1, int day = 1)
{
if (year >= 0 && month >= 1 && day << GetMonDay(year, month) && day >= 1 && month <= 12)
{
_year = year;
_month = month;
_day = day;
}
else
{
cout << "非法日期" << endl;
}
}
Date(const Date& d)
{
_year = d._year;
_month = d._month;
_day = d._day;
}
inline bool operator==(const Date& d2)
{
return this->_year == d2._year
&& this->_month == d2._month
&& this->_day == d2._day;
}
inline bool operator<(const Date d2)
{
if (this->_year < d2._year)
{
return true;
}
else if (this->_year == d2._year && this->_month < d2._month)
{
return true;
}
else if (this->_year == d2._year && this->_month == d2._month && this->_day < d2._day)
{
return true;
}
return false;
}
inline bool operator<=(const Date d2)
{
return *this < d2 || *this == d2;
}
inline bool operator>(const Date d2)
{
return !(*this <= d2);
}
inline bool operator>=(const Date d2)
{
return (*this > d2 || *this == d2);
}
bool operator!=(const Date& d)
{
return !(*this == d);
}
Date& operator=(Date &d)
{
if (*this != d)
{
this->_year = d._year;
this->_month = d._month;
this->_day = d._day;
}
return *this;
}
Date operator+(int day)
{
Date ret = (*this);
ret._day += day;
while (ret._day > GetMonDay(ret._year, ret._month))
{
ret._day -= GetMonDay(ret._year, ret._month);
ret._month++;
if (ret._month == 13)
{
ret._year++;
ret._month = 1;
}
}
return ret;
}
Date operator-(int day)
{
Date ret = *this;
ret._day -= day;
while (ret._day < 1)
{
ret._month--;
if (ret._month == 0)
{
ret._year--;
ret._month = 12;
}
ret._day += GetMonDay(ret._year, ret._month);
}
return ret;
}
void prient()
{
cout << _year << "-" << _month << "-" << _day << endl;
}
private:
int _year;
int _month;
int _day;
};
|