//两个日期相减得到的天数 int Date::operator-(const Date &d) { int days = 0; if (*this < d) { for (int i = year; i < d.year; i++) { days -= isLeapYear(i) ? 366 : 365; } for (int i = 1; i < month; i++) { days -= getDaysOfMonth(year, i); } days -= day; for (int i = d.year; i > year; i--) { days += isLeapYear(i) ? 366 : 365; } for (int i = 1; i < d.month; i++) { days += getDaysOfMonth(d.year, i); } days += d.day; } else { days = d - *this; days = -days; } return days; } //距现在向前100天是哪一天 Date Date::before(int days) { return (*this) - days; } //距现在向后100天是哪一天 Date Date::after(int days) { return (*this) + days; } //重载小于号 bool Date::operator<(const Date &d) { if (year != d.year) { return year < d.year; } else if (month != d.month) { return month < d.month; } else { return day < d.day; } } //输出日期 void Date::print() { cout << year << "." << month << "." << day; }
时间: 2024-04-28 22:20:44 浏览: 82
JS 两日期相减,获得天数的小例子(兼容IE,FF)
这段代码是日期类的其余成员函数的实现,包括:
- operator-函数:重载减号运算符,使得两个日期类实例可以相减,返回它们之间的天数差。
- before函数:计算距离当前日期向前指定天数的日期,返回新的日期类实例。
- after函数:计算距离当前日期向后指定天数的日期,返回新的日期类实例。
- operator<函数:重载小于号运算符,使得两个日期类实例可以比较大小,返回bool值。
- print函数:输出日期类实例的年月日信息。
这些函数的功能比较简单,其中operator-函数比较复杂,它首先比较两个日期之间的大小,然后根据大小分别计算它们之间的天数差。before和after函数则是分别调用operator-和operator+函数实现的,功能也比较简单。operator<函数则是比较两个日期类实例的大小,这里使用了年、月、日的顺序进行比较。print函数用于输出日期类实例的年月日信息。
阅读全文