如下所示:
#include<iostream> using namespace std; class Date { public: Date(int year = 1900, int month = 1, int day = 1) //构造 :_year(year) , _month(month) , _day(day) { if (!isInvalidDate(_year, _month, _day)) { _year = 1900; _month = 1; _day = 1; } } Date operator+(int count) { Date tmp(*this); tmp._day += count; ToCorrect(tmp); return tmp; } Date operator-(int count) { Date tmp(*this); tmp._day -= count; ToCorrect(tmp); return tmp; } Date& operator++() //前置++ { (*this)++; return *this; } Date operator++(int) //后置++ { Date tmp(*this); (*this)+=1; return tmp; } Date& operator--() { (*this)--; return *this; } Date operator--(int) { Date tmp(*this); (*this)--; return tmp; } int operator-(const Date &d) { int flag = 1; Date max = *this; Date min = d; if (*this<d) { max = d; min = *this; flag = -1; } int count=0; while (min != max) { ++min; count++; } return count*flag; } Date& operator+=(int day) { *this = *this + day; return *this; } bool operator!=(const Date &d) { return !(*this == d); } bool operator<(const Date &d) { return !((*this>d)||(*this==d)); } bool operator>=(const Date &d) { return !(*this<d); } bool operator>(const Date &d) { return (_year > d._year || (_year == d._year && _month > d._month) || (_year == d._year && _month == d._month && _day > d._day)); } bool operator==(const Date &d) { return ((_year == d._year) && (_month == d._month) && (_day == d._day)); } public: bool IsLeapYear(int year) { if(year % 400 || (year % 4 && year % 100)) return true; return false; } int YearsOfMonth(int year, int month) { int day; int days[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; day = days[month]; if (month == 2) day += IsLeapYear(year); return day; } Date ToCorrect(Date &d) { if (d._day>YearsOfMonth(d._year, d._month)) { while (d._day > YearsOfMonth(d._year, d._month)) { d._day -= YearsOfMonth(d._year,d._month); if (d._month == 12) { d._year++; d._month = 1; } else { ++d._month; } } } else { while (d._day <= 0) { if (d._month == 1) { d._year--; d._month = 12; } else { --d._month; } d._day += YearsOfMonth(d._year, d._month); } } return d; } bool isInvalidDate(int year, int month, int day) { if ((year < 1) || (month<0 || month>12) || (day<0 || day>YearsOfMonth(year,month))) return false; return true; } void Display() { cout << _year << "-" << _month << "-" << _day << endl; } friend istream& operator>>(istream& is, Date &d); friend ostream& operator<<(ostream& os, const Date &d); private: int _year; int _month; int _day; }; istream& operator>>(istream& is, Date& d) { cout << "请输入一个日期" << endl; is >> d._year >> d._month >> d._day; return is; } ostream& operator<<(ostream& os, const Date &d) { cout << d._year << "-" <<d. _month << "-" << d._day << endl; return os; } int main() { /*Date d1(2016,8,18); //d1.Display(); //d1 = d1++; cout << d1 << endl;*/ //Date d1(2015, 12, 3); //(d1++).Display(); //d1.operator++(&d1, 0); //(++d1).Display(); //d1.operator++(&d1); Date d1(2015, 12, 3); Date d2(2015, 11, 1); cout << (d1 - d2) << endl; //Date d1(2015, 12, 3); //Date ret = d1 + 40; //operator+ //ret.Display(); /*Date d1(2015, 12, 3); Date ret = d1 + 40; d1 = ret; ret = d1 - 40; ret.Display();*/ /*Date ret; Date d2(2015, 1, 1); ret = d2 - 1; ret.Display();*/ return 0; }
以上这篇C++实现日期类(Date类)的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
本文向大家介绍C#实现日期格式转换的公共方法类实例,包括了C#实现日期格式转换的公共方法类实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现日期格式转换的公共方法类。分享给大家供大家参考,具体如下: 这里演示了C#中一些日期格式的转换。 创建公共方法类(UtilityHandle.cs),代码如下: PS:这里再为大家推荐几款日期与时间相关工具供大家参考使用: 在日期天数差计算器
本文向大家介绍javascript 封装Date日期类实例详解,包括了javascript 封装Date日期类实例详解的使用技巧和注意事项,需要的朋友参考一下 javascript-封装Date日期类 (一)对日期进行格式化 自定义Date日期类的format()格式化方法 方式一:(非原创) 测试: (二)根据日期返回本周周一和周日的日期 测试: 注意:
本文向大家介绍C#转换日期类型实例,包括了C#转换日期类型实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#转换日期类型的方法。分享给大家供大家参考。具体分析如下: 如:将日期1999-5-31 11:20转换成 /Date(928120800000+0800)/ 其中928120800000实际上是一个1970 年 1 月 1 日 00:00:00至这个DateTime中间间隔的毫
本文向大家介绍C#中子类调用父类的实现方法,包括了C#中子类调用父类的实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#中实现子类调用父类的方法,分享给大家供大家参考之用。具体方法如下: 一、通过子类无参构造函数创建子类实例 创建父类Person和子类Student。 在客户端通过子类无参构造函数创建子类实例。 输出结果: 可见:通过调用子类无参构造函数创建子类实例,会默认调用父
问题内容: 假设我有这个: 我有一个随机日期,例如2015年5月6日(这不是固定日期,每次都是随机的)。如果要将此日期的“年份”作为年份,并在今年加上“ n”,我该怎么做? Date类中的所有方法都不是’int’。 为了从整数中添加年份,“ years”也必须是一个整数。 问题答案: 您需要将转换为。 您可以将Year(或其他字段)用作日历,然后将其转换回Date。
全新的这里! 这是我第一次使用Python类,我有点困惑。我想尝试用三个属性存储日期——年、月和日(作为整数)。 我想做的是: 对于____init____()函数,取一年、月和一个日期(默认值为 1900、1 和 1),并在写出月份的情况下返回: 对于____str____() 函数,将数据格式化为包含年、月和日的字符串: same_date_in_year()确定两个日期是否在同一日期,即使它