1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87#include <time.h>
#include "Utilities.h"
bool readString(const string &prompt, string &returnString) {
string testString;
cout << prompt;
getline(cin, testString);
cout << endl;
if (cin.fail()) {
if (!cin.eof())
cin.ignore(1000, '\n');
cin.clear();
return false;
}
if (testString == "" || testString == "\n")
return false;
returnString = testString;
return true;
}
/*long int dateToDayNumber(Date date) {
date.month = (date.month + 9) % 12;
date.year = date.year - date.month / 10;
return 365 * date.year + date.year / 4 - date.year / 100 + date.year / 400 + (date.month * 306 + 5) / 10 +
(date.day - 1);
}
Date dayNumberToDate(long int g) {
Date returnDate;
returnDate.year = (10000 * g + 14780) / 3652425;
int ddd = g - (365 * returnDate.year + returnDate.year / 4 - returnDate.year / 100 + returnDate.year / 400);
if (ddd < 0) {
returnDate.year--;
ddd = g - (365 * returnDate.year + returnDate.year / 4 - returnDate.year / 100 + returnDate.year / 400);
}
int mi = (100 * ddd + 52) / 3060;
returnDate.month = (mi + 2) % 12 + 1;
returnDate.year = returnDate.year + (mi + 2) / 12;
returnDate.day = ddd - (mi * 306 + 5) / 10 + 1;
return returnDate;
}*/
bool validDay(int year, int month, int day) {
switch (month) {
case 4:
case 6:
case 9:
case 11:
return day <= 30;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return day <= 31;
case 2: {
bool leapyear = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
if (leapyear)
return day <= 29;
else
return day <= 28;
}
default:
return false;
}
}
bool validHour(int hour, int minute) {
return hour >= 0 && hour <= 23 && minute >= 0 && minute <= 59;
}
bool operator>(tm d1, tm d2){
return mktime(&d1) > mktime(&d2);
}
bool operator==(tm d1, tm d2){
return mktime(&d1) == mktime(&d2);
}
tm getToday() {
time_t now = time(NULL);
tm *today = localtime(&now);
return *today;
}