1 #ifndef MY_DATE_H 2 #define MY_DATE_H 3 4 #include "common.h" 5 6 class Date 7 { 8 unsigned char day; 9 unsigned char month; 10 unsigned short year; 11 12 public: Date()13 Date() { day = 0; month = 0; year = 0; } 14 15 /* Date needs to be in the format dd/mm/yyyy to be accepted */ Date(std::string date)16 Date(std::string date) 17 { 18 std::istringstream buf(date); 19 buf >> day; 20 buf.ignore(numeric_limits<int>::max(), '/'); 21 buf >> month; 22 buf.ignore(numeric_limits<int>::max(), '/'); 23 buf >> year; 24 25 if(day > 31 || month > 12) 26 cerr << "Date expected in format dd/mm/yyyy, not as " << date << endl; 27 } 28 Date(std::istream & in)29 Date(std::istream& in) 30 { 31 in >> day; 32 in.ignore(numeric_limits<int>::max(), '/'); 33 in >> month; 34 in.ignore(numeric_limits<int>::max(), '/'); 35 in >> year; 36 37 if(day > 31 || month > 12) 38 cerr << "Date expected in format dd/mm/yyyy!" << endl; 39 } 40 Date(unsigned char d,unsigned char m,unsigned short y)41 Date(unsigned char d, unsigned char m, unsigned short y) : day(d), month(m), year(m) {} 42 getDay()43 unsigned char getDay() { return day; } getMonth()44 unsigned char getMonth() { return month; } getYear()45 unsigned short getYear() { return year; } 46 47 bool operator<(const Date& date) 48 { 49 return (year < date.year) || 50 ((year == date.year) && (month < date.month)) || 51 ((year == date.year) && (month == date.month) && (day < date.day)); 52 } 53 }; 54 55 #endif /* MY_DATE_H */ 56