Класс year_month_day
Представляет месяц, год и день.
Синтаксис
class year_month_day; // C++20
Участники
Имя | Описание |
---|---|
Конструкторы | Создание year_month_day |
day |
Возвращает день. |
month |
Возвращает месяц. |
ok |
Убедитесь, что year значения и month значения находятся в допустимом диапазоне. |
operator+= |
Добавьте указанное количество месяцев или лет. |
operator-= |
Вычитает указанное количество месяцев или лет. |
operator local_days |
Получите количество дней от system_clock эпохи до этогоyear_month_day .local_days |
operator sys_days |
Получите количество дней от system_clock эпохи до этогоyear_month_day .sys_days |
year |
Возвращает год. |
Не являющиеся членами
Имя | Описание |
---|---|
from_stream |
year_month_day Анализ из потока с помощью указанного формата |
operator+ |
Добавьте месяцы или годы. |
operator- |
Вычитайте месяцы или годы. |
operator== |
Определите, равны ли два year_month_day значения. |
operator<=> |
Сравните два year_month_day значения. Операторы >, >=, <=, <, != синтезируются компилятором. |
operator<< |
Выводится year_month_day в поток. |
Требования
Заголовок: <chrono>
(с C++20)
Пространство имен: std::chrono
Параметр компилятора: /std:c++latest
Конструкторы
Создайте year_month_day
1) year_month_day() = default;
2) constexpr year_month_day(const year& y, const month& m, day& d) noexcept;
3) constexpr year_month_day(const year_month_day_last& ymdl) noexcept;
4) constexpr year_month_day(const sys_days& dp) noexcept;
5) constexpr explicit year_month_day(const local_days& dp) noexcept;
Параметры
d
day
Значение.
dp
Значение или local_days
значениеsys_days
.
m
month
Значение.
y
Значение year
.
ymdl
year_month_day_last
Значение.
Замечания
1) Конструктор по умолчанию не инициализирует месяц или день.
2) Создает объект с указанным годом year_month_day
, месяцем и днем.
3) Создает объект с указанным годом year_month_day
, месяцем и днем ymdl
4) Создает объект year_month_day
с той же датой, что dp
и .
5) Создает с year_month_day
той же датой, что dp
и будто построено year_month_day(sys_days(dp.time_since_epoch()))
.
Сведения о синтаксисе C++20, используемом для указания дат, см. в разделе operator/
Пример. Создание year_month_day
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
year_month_day ymd{ April / 4 / 1975 };
std::cout << ymd;
return 0;
}
1975-04-04
day
Получите день.
constexpr day day() const noexcept;
Возвращаемое значение
Значение типа day
.
month
Получите месяц.
constexpr month month() const noexcept;
Возвращаемое значение
Значение типа month
.
operator local_days
Получение количества дней от system_clock
эпохи (1/1/1970) к этому year_month_day
как local_days
constexpr explicit operator local_days() const noexcept;
Возвращаемое значение
Если ok()
, возвращает количество дней в виде local_days{sys_days{*this}.time_since_epoch()}
operator sys_days
Получите количество дней от system_clock
эпохи (1/1/1970) к этому year_month_day
как sys_days
.
constexpr operator sys_days() const noexcept;
Возвращаемое значение
Если ok()
, возвращает sys_days
количество дней от sys_days
эпохи (1/1/1970) до даты, проведенной в этой дате year_month_day
. Значение будет отрицательным, если дата в этой year_month_day
дате до sys_days
эпохи.
Если год и месяц в этом year_month_day
случае ok()
, возвращается sys_days{year/month/1d} + (day-1d)
. В противном случае возвращаемое значение не указано.
В sys_days
диапазоне [days{-12687428}
, days{11248737}
] можно преобразовать в year_month_day
и обратно и иметь одно и то же значение.
year
Получите год.
constexpr year year() const noexcept;
Возвращаемое значение
year
.
ok
Проверьте, есть ли значение года и месяца, хранящиеся в этом year_month_day
диапазоне. Гарантирует, что день находится в диапазоне [1d, (y/m/last).day()], учитывая високосные годы и разное количество дней в каждом месяце.
constexpr bool ok() const noexcept;
Возвращаемое значение
true
year_month_day
Если значения года, месяца и дня находятся в допустимом диапазоне. В противном случае — false
.
operator+=
Добавьте к этому year_month_day
месяцы или годы.
1) constexpr year_month_day& operator+=(const months& dm) noexcept;
2) constexpr year_month_day& operator+=(const years& dy) noexcept;
Параметры
dm
Количество добавленных месяцев.
dy
Количество добавляемых лет.
Возвращаемое значение
*this
, который отражает результат добавления.
Пример: operator+=
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
year_month_day ymd{June / 1d / 2021y};
std::cout << ymd << '\n';
ymd += months{2};
ymd += years{1};
std::cout << ymd;
return 0;
}
2021-06-01
2022-08-01
operator-=
Вычитайте месяцы или годы из этого year_month_day
.
1) constexpr year_month_day& operator-=(const months& dm) noexcept;
2) constexpr year_month_day& operator-=(const years& dy) noexcept;
Параметры
dm
Количество месяцев для вычитания.
dy
Количество лет для вычитания.
Возвращаемое значение
*this
, который отражает результат вычитания.
Пример: operator-=
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
year_month_day ymd{June / 1d / 2021y};
std::cout << ymd << '\n';
ymd -= months{2};
ymd -= years{1};
std::cout << ymd;
return 0;
}
2021-06-01
2020-04-01
См. также
<chrono>
year
year_month
year_month_day_last
year_month_weekday
year_month_weekday_last
operator/
Справочник по файлам заголовков