日期类,日期相减,实现日期的下一天
两个日期 相减
日期 + 天数 得到的日期
具体要求:实现类date,其中
构造函数包括year,month,day三个参数
重载两个date类之间的-,以及date类的+=,-=
使用int year(),int month(),int day()返回三个参数
#include <iostream>using namespace std;class date {private:int y;int m;int d;public:date(int, int, int);int year();int month();int day();date operator++ ();date operator++ (int);date operator-- ();date operator-- (int);friend int operator- (const date &dt1, const date &dt2);friend void operator+= (date &dt, const int n);friend void operator-= (date &dt, const int n);};date::date(int year = 0, int month = 0, int day = 0) {y = year;m = month;d = day;
}int date::year() {return y;
}int date::month() {return m;
}int date::day() {return d;
}date date::operator++ () {int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if ((y % 400 == 0) || (y % 4 == 0 && y % 100 != 0)) {days[1]++;}if (d != days[m - 1]) {d++;} else {d = 1;if (m != 12) {m++;} else {m = 1;y++;}}return * this;
}date date::operator++ (int day) {date dt(*this);int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if ((y % 400 == 0) || (y % 4 == 0 && y % 100 != 0)) {days[1]++;}if (d != days[m - 1]) {d++;} else {d = 1;if (m != 12) {m++;} else {m = 1;y++;}}return dt;
}date date::operator-- () {int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if ((y % 400 == 0) || (y % 4 == 0 && y % 100 != 0)) {days[1]++;}if(d == 1) {if (m == 1) {d = 31;m = 12;y--;} else {m--;d = days[m - 1];}} else {d--;}return * this;
}date date::operator-- (int day) {date dt(*this);int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if ((y % 400 == 0) || (y % 4 == 0 && y % 100 != 0)) {days[1]++;}if(d == 1) {if (m == 1) {d = 31;m = 12;y--;} else {m--;d = days[m - 1];}} else {d--;}return dt;
}int operator- (const date &dt1, const date &dt2) {date dtemp(dt2);int count = 0;while (dt1.y != dtemp.y || dt1.m != dtemp.m || dt1.d != dtemp.d) {count++;dtemp++;}return count;
}void operator+= (date &dt, const int n) {for (int i = 0; i < n; i++) {dt++;}
}void operator-= (date &dt, const int n) {for (int i = 0; i < n; i++) {dt--;}
}int main(void) {using std::cin;using std::cout;using std::endl;date D1,D2;int year;int month;int day;cin >> year >> month >> day; //shu ru di yi ge ri qiD1 = date(year, month, day);cin >> year >> month >> day; //shu ru di er ge ri qiD2 = date(year, month, day);cout << D2 - D1 << endl;cin >> day; //shu ru yao jia jian de tian shu,D1 += day;D2 -= day;cout << D1.year() << " " << D1.month() << " " << D1.day() << endl;cout << D2.year() << " " << D2.month() << " " << D2.day() << endl;return 0;
}