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