#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 日...