20 #ifndef _ANCH_DATE_DATE_H_ 21 #define _ANCH_DATE_DATE_H_ 55 static std::mutex _mutex;
58 std::int64_t _timestamp;
79 uint16_t _minutes = 0;
82 uint16_t _seconds = 0;
85 uint16_t _milliseconds = 0;
88 uint16_t _microseconds = 0;
91 uint16_t _nanoseconds = 0;
101 Date(
bool init =
true);
115 Date(
const std::time_t& time);
122 Date(
const std::tm*
const time);
140 template<
typename R,
typename P>
141 void initialize(
const std::chrono::duration<R,P>& duration) noexcept {
142 _nanoseconds =
static_cast<uint16_t
>(std::chrono::duration_cast<std::chrono::nanoseconds>(duration).count() % 1000);
143 _microseconds =
static_cast<uint16_t
>(std::chrono::duration_cast<std::chrono::microseconds>(duration).count() % 1000);
144 _milliseconds =
static_cast<uint16_t
>(std::chrono::duration_cast<std::chrono::milliseconds>(duration).count() % 1000);
152 void initialize(
const std::tm*
const time);
157 void computeTimestamp();
162 inline void computeTm(std::tm& time)
const {
163 time.tm_sec = _seconds;
164 time.tm_min = _minutes;
165 time.tm_hour = _hours;
166 time.tm_mday = _mdays;
167 time.tm_mon = _months;
168 time.tm_year = _years - 1900;
180 return _timestamp > date._timestamp;
191 return _timestamp < date._timestamp;
202 return _timestamp == date._timestamp;
215 inline bool operator > (
const Date& date)
const noexcept {
225 inline bool operator >= (
const Date& date)
const noexcept {
226 return (after(date) || equals(date));
235 inline bool operator < (
const Date& date)
const noexcept {
245 inline bool operator <= (
const Date& date)
const noexcept {
246 return (before(date) || equals(date));
255 inline bool operator == (
const Date& date)
const noexcept {
265 inline bool operator != (
const Date& date)
const noexcept {
266 return !equals(date);
274 inline operator std::time_t() const noexcept {
277 return std::mktime(&time);
285 inline operator std::tm() const noexcept {
297 #endif // _ANCH_DATE_DATE_H_ bool equals(const Date &date) const noexcept
Definition: date.hpp:201
bool after(const Date &date) const noexcept
Definition: date.hpp:179
AnCH framework base namespace.
Definition: base64.hpp:28
bool before(const Date &date) const noexcept
Definition: date.hpp:190