semf
date.h
Go to the documentation of this file.
1
10#ifndef SEMF_UTILS_SYSTEM_DATE_H_
11#define SEMF_UTILS_SYSTEM_DATE_H_
12
13#include <cstddef>
14#include <cstdint>
15
16namespace semf
17{
33class Date
34{
35public:
37 enum Month
38 {
51 };
54 {
55 Sunday = 0,
62 };
63
64 Date() = default;
71 Date(uint8_t day, Month month, uint16_t year);
72 virtual ~Date() = default;
73
81 bool setDate(uint8_t day, Month month, uint16_t year);
86 uint8_t day() const;
92 bool setDay(uint8_t day);
97 Month month() const;
103 bool setMonth(Month month);
108 uint16_t year() const;
114 bool setYear(uint16_t year);
119 void addDays(int32_t days);
125 Weekday weekday() const;
130 void addMonths(int32_t months);
135 void addYears(int32_t years);
141 bool operator==(const Date& dateToCompareWith) const;
147 bool operator!=(const Date& dateToCompareWith) const;
153 bool operator<(const Date& dateToCompareWith) const;
159 bool operator<=(const Date& dateToCompareWith) const;
165 bool operator>(const Date& dateToCompareWith) const;
171 bool operator>=(const Date& dateToCompareWith) const;
172
173protected:
183 static uint8_t daysInMonth(Month month, uint16_t year);
189 static bool isLeapYear(uint16_t year);
197 static bool isValid(uint8_t day, Month month, uint16_t year);
198
199private:
201 uint8_t m_day = 1;
203 Month m_month = Month::January;
205 uint16_t m_year = 0;
206};
207} /* namespace semf */
208#endif /* SEMF_UTILS_SYSTEM_DATE_H_ */
The Date class provides date functions.
Definition: date.h:34
bool operator>=(const Date &dateToCompareWith) const
Compares this date with other.
Definition: date.cpp:225
uint16_t year() const
Returns the year.
Definition: date.cpp:77
bool operator<(const Date &dateToCompareWith) const
Compares this date with other.
Definition: date.cpp:202
bool operator==(const Date &dateToCompareWith) const
Compares this date with other.
Definition: date.cpp:185
Date()=default
static bool isValid(uint8_t day, Month month, uint16_t year)
Returns if the given date is valid.
Definition: date.cpp:265
void addYears(int32_t years)
Adds years to this date.
Definition: date.cpp:162
void addDays(int32_t days)
Adds days to this date.
Definition: date.cpp:97
Weekday weekday() const
Returns the day in the week of the actual Date.
Definition: date.cpp:175
bool setMonth(Month month)
Sets a month.
Definition: date.cpp:62
static bool isLeapYear(uint16_t year)
Returns if a specific year is a leap year or not.
Definition: date.cpp:260
bool operator>(const Date &dateToCompareWith) const
Compares this date with other.
Definition: date.cpp:220
static uint8_t daysInMonth(Month month, uint16_t year)
Returns the number of days in a specific month and year.
Definition: date.cpp:230
bool setDay(uint8_t day)
Sets a day.
Definition: date.cpp:42
@ March
Definition: date.h:41
@ August
Definition: date.h:46
@ October
Definition: date.h:48
@ July
Definition: date.h:45
@ June
Definition: date.h:44
@ April
Definition: date.h:42
@ January
Definition: date.h:39
@ February
Definition: date.h:40
@ December
Definition: date.h:50
@ September
Definition: date.h:47
@ May
Definition: date.h:43
@ November
Definition: date.h:49
uint8_t day() const
Returns the day.
Definition: date.cpp:37
bool setYear(uint16_t year)
Sets a year.
Definition: date.cpp:82
virtual ~Date()=default
Month month() const
Returns the month.
Definition: date.cpp:57
Weekday
Definition: date.h:54
@ Tuesday
Definition: date.h:57
@ Friday
Definition: date.h:60
@ Saturday
Definition: date.h:61
@ Wednesday
Definition: date.h:58
@ Monday
Definition: date.h:56
@ Sunday
Definition: date.h:55
@ Thursday
Definition: date.h:59
bool operator<=(const Date &dateToCompareWith) const
Compares this date with other.
Definition: date.cpp:215
bool operator!=(const Date &dateToCompareWith) const
Compares this date with other.
Definition: date.cpp:197
void addMonths(int32_t months)
Adds months to this date.
Definition: date.cpp:138
bool setDate(uint8_t day, Month month, uint16_t year)
Sets date information.
Definition: date.cpp:20