C++实现日期类(Date类)的方法

C++实现日期类(Date类)的方法,第1张

概述如下所示:#include<iostream>usingnamespacestd;classDate{public:Date(intyear=1900,intmonth=1,intday=1)//构造

如下所示:

#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,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,3);  Date d2(2015,11,1);  cout << (d1 - d2) << endl;  //Date d1(2015,3);  //Date ret = d1 + 40; //operator+  //ret.display();  /*Date d1(2015,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++实现日期类(Date类)的方法全部内容,希望文章能够帮你解决C++实现日期类(Date类)的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1245605.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存