日期类定义

来源:互联网 发布:魔女的条件知乎 编辑:程序博客网 时间:2024/06/14 04:22
#include <iostream>using std::cout;using std::cin;using std::endl;class Date { public:  void setDate(int year, int month, int day);  int year() const;  int month() const;  int day() const;  std::string toString() const {    const int length_of_date_string = 10;    char date_string[length_of_date_string + 1];    snprintf(date_string,            length_of_date_string + 1,            "%04d-%02d-%02d",            year_, month_, day_);    return std::string(date_string);  }  void increase();  void decrease(); private:  int year_;  int month_;  int day_;  int daysOfMonth(int year, int month) const;};void Date::setDate(int year, int month, int day){    year_=year;    month_=month;    day_=day;}int Date::year() const{    return year_;}int Date::month() const{    return month_;}int Date::day() const{    return day_;}int Date::daysOfMonth(int year, int month) const{    if(month%2==0&&month>=8)return 31;    else if (month%2!=0&&month<=7)return 31;    else if(month!=2)return 30;    else if(year%400==0||(year%4==0&&year%100!=0))return 29;    else return 28;}void Date::increase(){    day_++;    if(day_>daysOfMonth(year_,month_)){        day_ = 1;        month_++;        if(month_>12){            year_++;            month_=1;        }    }}void Date::decrease(){    day_--;    if(day_==0){        month_--;        if(month_==0){            year_--;            month_=12;            day_=31;        }        day_=daysOfMonth(year_,month_);    }}void TestDate(Date& date, int after, int before) {  cout << "Year: " << date.year() << endl       << "Month: " << date.month() << endl       << "Day: " << date.day() << endl;  cout << "Formatted: " << date.toString() << endl;  date.increase();  cout << "1 day later: " << date.toString() << endl;  for (int i = 0; i < after; ++i) {    date.increase();  }  cout << "Another " << after << " day(s) later: " << date.toString() << endl;  for (int i = 0; i < before; ++i) {    date.decrease();  }  cout << "Another " << before << " day(s) earlier: " << date.toString() << endl;}int main() {  int year, month, day;  int after, before;  cin >> year >> month >> day;  cin >> after >> before;  Date date;  date.setDate(year, month, day);  TestDate(date, after, before);  return 0;}


//还是良心附有测试main函数,先叉会腰冷静一下

原创粉丝点击