C 實現乙個日期類

2021-07-24 00:22:46 字數 3826 閱讀 7992

#include using namespace std;

class date

}public:

bool is_invalid_date()//判斷日期是否無效

return false;

}public:

int day_in_month()

;if(is_leap_year())

return days[_month];

}public:

bool is_leap_year()

return false;

}date(const date& d)

:_year(d._year)

,_month(d._month)

,_day(d._day)

date& operator=(const date& d)

return *this;

}public:

void to_correct_date()

else

_day += day_in_month();

}while(_day > day_in_month())

else}}

date operator+(int day)

date& operator+=(int day)

date operator-(int day)

date& operator-=(int day)

int operator-(const date &d)

while(d1 != d2)

return days;

}bool operator>(const date& d)}}

return false;

}bool operator>=(const date& d)

bool operator!=(const date& d)

bool operator==(const date& d)

bool operator<(const date& d)

bool operator<=(const date& d)

private:

int _year;

int _month;

int _day;

};ostream& operator<<(ostream& os, const date& d)

int main()

my_date operator+(int m);

my_date& operator+=(int m);

// void add(int m);//加天數

my_date operator-(int m);

my_date& operator-=(int m);

// void del(int m);//減天數

int operator-( my_date& q);

//int diff(my_date& q);//日期差

//void display();//顯示

private:

int year,month,day;

};my_date my_date::operator+(int m)

,temp,f;//d為12個月每個月天數的陣列

f=0;

while (m>0)

m-=temp;

tmp_date.day=0;

tmp_date.month++;

for (;tmp_date.month<=12;tmp_date.month++)//開始月遍歷進行日期計算

else

}if (tmp_date.month<=12)//若所加天數在本年12月內

break;

tmp_date.month=1;//所加天數超過今天剩餘天數,月初始化為1月,即從下年一月繼續算

tmp_date.year++;//加一年

}return tmp_date;

}my_date& my_date::operator+=(int m)

,temp,f;//d為12個月每個月天數的陣列

f=0;

while (m>0)

m-=temp;

day=0;

month++;

for (;month<=12;month++)//開始月遍歷進行日期計算

else

}if (month<=12)//若所加天數在本年12月內

break;

month=1;//所加天數超過今天剩餘天數,月初始化為1月,即從下年一月繼續算

year++;//加一年

}return *this;

}my_date my_date::operator-(int m)

//void my_date::del(int m)//本函式注釋與add基本相同

,f;    f=0;

while (m>0)

m-=tmp_date.day;

tmp_date.month--;

for (;tmp_date.month>=1;tmp_date.month--)

else

}if (tmp_date.month>=1)

break;

tmp_date.month=12;

tmp_date.year--;

tmp_date.day=31;

}return tmp_date;

}my_date& my_date::operator-=(int m)

//void my_date::del(int m)//本函式注釋與add基本相同

,f;    f=0;

while (m>0)

m-=day;

month--;

for (;month>=1;month--)

else

}if (month>=1)

break;

month=12;

year--;

day=31;

}return *this;

}int my_date::operator-( my_date& q)

//int my_date::diff(my_date& q)

,m,i;

my_date temp;

my_date *psmall,*pbig;

if (year==q.year)//如果年相同

else//月不同

else

temp.month=psmall->month;

temp.day=psmall->day;

for (i=1;i<=366;i++)//每次加一天,看看加多少次,兩個日期相同,加的次數即為相差的天數

}differece=(month>q.month?-differece:differece);}}

else//年份不同

else

temp.year=psmall->year;

temp.month=psmall->month;

temp.day=psmall->day;

m=pbig->year-psmall->year;

for (i=(m-1)*365;i<=(m+1)*366;i++)//每次加一天,看看加多少次,兩個日期相同,加的次數即為相差的天數

}differece=(year>q.year?-differece:differece);

}return differece;

}ostream& operator<<(ostream& os, const my_date& q)

//void my_date::display()

{    os《本文出自 「城市獵人」 部落格,請務必保留此出處

用C 實現乙個日期類

最近在複習c 的時候發現日期類是乙個非常有用的類,在現實中是非常實用的 雖然我不知道為什麼這麼實用的類,庫里沒有 以下是我自己實現的日期類的 因為大部分都是運算子的過載,所以理解起來應該並不難 include include using namespace std class date date c...

C 實現乙個Date類

關於日期類,我們最基本的成員變數就是三個 年 月 日。關於成員函式我們要實現構造,拷貝構造,賦值,關於日期的比較大小,以及日期加天數,日期減天數,以及 和 同時還要考慮能否復用,日期減日期,還有日期類的 和 分為前置和後置 等。具體 如下 詳情請看 注釋 date.h pragma once inc...

C 實現乙個日誌類

c 沒有貌似自帶的日誌類,如果僅僅使用cout輸出除錯資訊的話比較凌亂,所以我嘗試自己實現了乙個logger類,主要考慮實現以下功能 為了方便的設定日誌等級,可以用乙個列舉類表示四種日誌等級,同理用乙個列舉類表示三種輸出目標 enum log level 日誌等級 enum log target 日...