3#ifndef TETL_CHRONO_YEAR_MONTH_DAY_LAST_HPP
4#define TETL_CHRONO_YEAR_MONTH_DAY_LAST_HPP
15[[nodiscard]]
constexpr auto last_day_of_month(chrono::year
const& y, chrono::month
const& m) -> chrono::day
17 constexpr chrono::day lastDays[] = {
32 if (m == chrono::month{2} and y.is_leap()) {
33 return chrono::day{29};
35 return lastDays[
static_cast<unsigned>(m) - 1];
53 [[nodiscard]]
constexpr auto year() const noexcept ->
chrono::
year {
return _y; }
55 [[nodiscard]]
constexpr auto month() const noexcept ->
chrono::
month {
return _mdl.month(); }
61 return detail::last_day_of_month(
year(),
month());
64 [[nodiscard]]
constexpr operator sys_days() const noexcept;
65 [[nodiscard]] constexpr explicit operator
local_days() const noexcept;
67 [[nodiscard]] constexpr auto
ok() const noexcept ->
bool {
return _y.ok() and _mdl.ok(); }
77 auto const ym =
year_month{lhs.year(), lhs.month()} + rhs;
96 return {lhs.year() + rhs, lhs.month_day_last()};
147 return {
year(y), mdl};
157 return {
year(y), mdl};
local_time< etl::chrono::days > local_days
Definition local_t.hpp:27
constexpr auto operator+(day const &d, days const &ds) noexcept -> day
Definition day.hpp:92
duration< int_least32_t, ratio< 31556952 > > months
Signed integer type of at least 20 bits.
Definition duration.hpp:371
sys_time< chrono::days > sys_days
Definition system_clock.hpp:39
constexpr auto operator/(duration< Rep1, Period1 > const &lhs, duration< Rep2, Period2 > const &rhs) -> common_type_t< Rep1, Rep2 >
Performs basic arithmetic operations between two durations or between a duration and a tick count.
Definition duration.hpp:272
duration< int_least32_t, ratio< 2629746 > > years
Signed integer type of at least 17 bits.
Definition duration.hpp:374
constexpr auto operator-(day const &d, days const &ds) noexcept -> day
Definition day.hpp:102
last_spec is an empty tag type that is used in conjunction with other calendar types to indicate the ...
Definition last_spec.hpp:19
Definition month_day_last.hpp:11
Definition year_month_day_last.hpp:41
constexpr auto ok() const noexcept -> bool
Definition year_month_day_last.hpp:67
constexpr auto month() const noexcept -> chrono::month
Definition year_month_day_last.hpp:55
constexpr auto year() const noexcept -> chrono::year
Definition year_month_day_last.hpp:53
constexpr auto month_day_last() const noexcept -> chrono::month_day_last
Definition year_month_day_last.hpp:57
constexpr year_month_day_last(chrono::year const &y, chrono::month_day_last const &mdl) noexcept
Definition year_month_day_last.hpp:42
constexpr auto operator+=(months const &m) noexcept -> year_month_day_last &
Definition year_month_day_last.hpp:111
constexpr auto operator-=(months const &m) noexcept -> year_month_day_last &
Definition year_month_day_last.hpp:117
constexpr auto day() const noexcept -> chrono::day
Definition year_month_day_last.hpp:59
Definition year_month.hpp:11