94 cxDate(
int pYear,
int pMonth,
int pDay,
96 char pSepChar =
'-')
noexcept;
99 cxDate(std::string_view pDateStr,
101 char pSepChar =
'-');
104 cxDate(std::string_view pDateStr,
char pSepChar);
109 char pSepChar =
'-')
noexcept;
130 [[nodiscard]]
int getDay() const noexcept
155 void setYear(
int pYear)
noexcept;
159 void setDay(
int pDay)
noexcept;
170 mDisplayLong = pDisplay;
177 [[nodiscard]]
bool setDate(
int pYear,
int pMonth,
int pDay)
noexcept;
184 void addYears(
int pNumYears)
noexcept;
192 void addDays(
int pNumDays)
noexcept;
220 cxDate operator--(
int) noexcept;
221 cxDate& operator--() noexcept;
224 [[nodiscard]]
cxDate operator+(
int pNumDays) const noexcept;
226 [[nodiscard]]
cxDate operator-(
int pNumDays) const noexcept;
228 [[nodiscard]]
int operator-(const
cxDate& pThat) const noexcept;
231 friend std::ostream& operator<<(std::ostream& pOS, const
cxDate& pDate);
233 friend std::istream& operator>>(std::istream& pIS,
cxDate& pDate);
240 [[nodiscard]] std::
string toString() const;
254 [[nodiscard]]
bool isLeapYear() const noexcept;
268 [[nodiscard]] static
int numMonthDays(
int pMonth,
int pYear) noexcept;
270 [[nodiscard]] static
bool isLeapYear(
int pYear) noexcept;
276 [[nodiscard]] static std::
string dayOfWeekStr(
int pYear,
int pMonth,
int pDay);
281 [[nodiscard]] static std::
string monthName(
int pMonth,
bool pAbbreviated = false);
284 [[nodiscard]] static std::
string getToday(
bool pLong = false);
300 std::string_view pDateStr,
302 char pSepChar = '-');
309 [[nodiscard]]
long toJulian() const noexcept;
311 static
long toJulian(
int pYear,
int pMonth,
int pDay) noexcept;
315 static
void fromJulian(
long pJulianDate,
int& pYear,
int& pMonth,
int& pDay) noexcept;
335 std::ostream& pOutStream = std::cout,
336 int pTrailingEndlines = 2);
342 std::ostream& pOutStream = std::cout,
343 int pTrailingEndlines = 2);
351 bool mDisplayLong = false;
355 static
bool validateDateElements(
int pYear,
int& pMonth,
int& pDay) noexcept;
357 [[nodiscard]] static std::
string getMonthName(
int pMonth);
358 [[nodiscard]] static
bool allDigits(std::string_view pStr) noexcept;
Enables easy management of dates. C++17-enhanced version of the original 'date' class.
Definition cxDate.h:84
void operator-=(int pNumDays) noexcept
Definition cxDate.cpp:221
bool fromString(std::string_view pDateStr)
Definition cxDate.cpp:390
int numMonthDays() const noexcept
Definition cxDate.cpp:516
long toJulian() const noexcept
Definition cxDate.cpp:667
void fromJulian(long pJulianDate) noexcept
Definition cxDate.cpp:683
virtual ~cxDate()=default
void subtractMonths(int pNumMonths) noexcept
Definition cxDate.cpp:172
cxDate & operator=(const cxDate &)=default
eWeekDays dayOfWeek() const noexcept
Definition cxDate.cpp:526
void setMonth(int pMonth) noexcept
Definition cxDate.cpp:108
char getSepChar() const noexcept
Definition cxDate.h:140
void setSepChar(char pSepChar) noexcept
Definition cxDate.h:163
static void monthCalendar(int pYear, int pMonth, std::ostream &pOutStream=std::cout, int pTrailingEndlines=2)
Definition cxDate.cpp:786
int getDay() const noexcept
Definition cxDate.h:130
bool operator>(const cxDate &pThat) const noexcept
Definition cxDate.cpp:234
bool operator<=(const cxDate &pThat) const noexcept
Definition cxDate.cpp:248
bool operator!=(const cxDate &pThat) const noexcept
Definition cxDate.cpp:230
int getMonth() const noexcept
Definition cxDate.h:125
void addYears(int pNumYears) noexcept
Definition cxDate.cpp:145
static std::string getToday(bool pLong=false)
Definition cxDate.cpp:607
bool isLeapYear() const noexcept
Definition cxDate.cpp:521
bool operator==(const cxDate &pThat) const noexcept
Definition cxDate.cpp:226
bool operator>=(const cxDate &pThat) const noexcept
Definition cxDate.cpp:240
cxDate & operator++() noexcept
Definition cxDate.cpp:259
std::string dayOfWeekStr() const
Definition cxDate.cpp:531
static std::optional< cxDate > tryParse(std::string_view pDateStr, eDateFormats pDateFormat=YYYY_MM_DD, char pSepChar='-')
Definition cxDate.cpp:651
void setYear(int pYear) noexcept
Definition cxDate.cpp:102
static cxDate today() noexcept
Definition cxDate.cpp:646
void subtractDays(int pNumDays) noexcept
Definition cxDate.cpp:208
void addMonths(int pNumMonths) noexcept
Definition cxDate.cpp:156
bool setDate(int pYear, int pMonth, int pDay) noexcept
Definition cxDate.cpp:128
void setDisplayLong(bool pDisplay) noexcept
Definition cxDate.h:168
bool getDisplayLong() const noexcept
Definition cxDate.h:145
void subtractYears(int pNumYears) noexcept
Definition cxDate.cpp:151
static std::string getDateFormatStr(eDateFormats pDateFormat)
Definition cxDate.cpp:762
cxDate(const cxDate &)=default
void setDateFormat(eDateFormats pDateFormat) noexcept
Definition cxDate.cpp:120
static int getCurrentYear() noexcept
Definition cxDate.cpp:633
eDateFormats getDateFormat() const noexcept
Definition cxDate.h:135
static std::string monthName(int pMonth, bool pAbbreviated=false)
Definition cxDate.cpp:593
void addDays(int pNumDays) noexcept
Definition cxDate.cpp:177
std::string toString() const
Definition cxDate.cpp:383
bool operator<(const cxDate &pThat) const noexcept
Definition cxDate.cpp:244
static void yearCalendar(int pYear, std::ostream &pOutStream=std::cout, int pTrailingEndlines=2)
Definition cxDate.cpp:823
void operator+=(int pNumDays) noexcept
Definition cxDate.cpp:217
int getYear() const noexcept
Definition cxDate.h:120
void setDay(int pDay) noexcept
Definition cxDate.cpp:114
cxBorderChars.h - Defines border characters to be used in drawing a box (i.e., in cxWindow and all it...
Definition cxApp.cpp:5
constexpr int CXDATE_START_MONTH
Definition cxDate.h:67
constexpr int CXDATE_YEAR_MAX
Definition cxDate.h:71
eDateFormats
Definition cxDate.h:36
@ DDMMYY
Definition cxDate.h:48
@ MMDDYYYY
Definition cxDate.h:44
@ MM_DD_YYYY
Definition cxDate.h:38
@ YYYY_MM_DD
Definition cxDate.h:37
@ DD_MM_YY
Definition cxDate.h:42
@ UNKNOWN
Definition cxDate.h:49
@ DDMMYYYY
Definition cxDate.h:45
@ DD_MM_YYYY
Definition cxDate.h:39
@ MM_DD_YY
Definition cxDate.h:41
@ MMDDYY
Definition cxDate.h:47
@ YYYYMMDD
Definition cxDate.h:43
@ YYMMDD
Definition cxDate.h:46
@ YY_MM_DD
Definition cxDate.h:40
constexpr int CXDATE_YEAR_2DIGIT_LAST_CENT
Definition cxDate.h:65
constexpr int CXDATE_END_MONTH
Definition cxDate.h:68
eWeekDays
Definition cxDate.h:53
@ eSATURDAY
Definition cxDate.h:60
@ eTUESDAY
Definition cxDate.h:56
@ eMONDAY
Definition cxDate.h:55
@ eSUNDAY
Definition cxDate.h:54
@ eFRIDAY
Definition cxDate.h:59
@ eTHURSDAY
Definition cxDate.h:58
@ eWEDNESDAY
Definition cxDate.h:57
constexpr int CXDATE_DEFAULT_YEAR
Definition cxDate.h:64
constexpr int CXDATE_START_DAY
Definition cxDate.h:69
constexpr int CXDATE_MONTHS_IN_YEAR
Definition cxDate.h:66
constexpr int CXDATE_YEAR_MIN
Definition cxDate.h:70