Поделиться через


Класс year_month_day_last

Представляет последний день определенного года и месяца.

year_month_day_last поддерживает арифметический месяц и годы арифметики, но не дни арифметики. Для выполнения арифметических операций, ориентированных на дни, преобразуйте его year_month_day_last sys_daysв .

Синтаксис

class year_month_day_last; // C++20

Участники

Имя Описание
Конструкторы Создание year_month_day_last
day Получите последний день месяца или года.
month Получите месяц.
month_day_last Получите значение month_day_last, хранящееся в этом year_month_day_lastфайле.
ok Убедитесь, что year значения и month значения находятся в допустимом диапазоне.
operator+= Добавьте к этому year_month_day_lastмесяцы или годы.
operator-= Вычитайте месяцы или годы из этого year_month_day_last.
operator local_days Получите количество дней от sys_days эпохи до этогоyear_month_day_last.local_days
operator sys_days Получите количество дней от sys_days эпохи до этогоyear_month_day_last.sys_days
year Получите год.

Не являющиеся членами

Имя Описание
operator+ Добавьте месяцы или годы.
operator- Вычитайте месяцы или годы.
operator== Определите, равны ли два year_month_day_last значения.
operator<=> Сравните два year_month_day_last значения. Операторы >, >=, <=, <, != синтезируются компилятором.
operator<< Выводится year_month_day_last в поток.

Требования

Заголовок: <chrono> (с C++20)

Пространство имен: std::chrono

Параметр компилятора: /std:c++latest

Конструкторы

year_month_day_last Создайте объект в течение указанного месяца и года.

constexpr year_month_day_last(const year& y, const month_day_last& mdl) noexcept;

Параметры

mdl Значение месяца из month_day_last объекта хранится в созданном year_month_day_lastобъекте.

y
Значение year хранится в построенном year_month_day_lastобъекте.

Замечания

Сведения о синтаксисе C++20, используемом для указания дат, см. в разделе operator/

Пример. Создание year_month_day_last

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    year_month_day_last ymdl{ April / last / 1975 };
    std::cout << ymdl;

    return 0;
}
1975/Apr/last

day

Если ok() имеет значение true, возвращает день, представляющий последний день года, месяц, представленный этим year_month_day_last.

constexpr day day() const noexcept;

Возвращаемое значение

Если ok() имеет значение true, возвращает day последний день года и месяца, *thisпредставленный . В противном случае возвращаемое значение не указано.

local_days

Получите месяц, день и год в этом year_month_day_last количестве дней.

constexpr explicit operator local_days() const noexcept;

Возвращаемое значение

local_days{sys_days{*this}.time_since_epoch()}

Пример

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    year_month_day_last ymdl{ June / last / 2021 };
    auto ld = local_days(ymdl);
    std::cout << ld.time_since_epoch();

    return 0;
}
18808d

month

Получите сохраненное значение месяца.

constexpr month month() const noexcept;

Возвращаемое значение

Значение типа month.

month_day_last

month_day_last Возвращает значение, хранящееся в этом year_month_day_lastфайле.

constexpr month_day_last month_day_last() const noexcept;

Возвращаемое значение

Значение month_day_last , хранящееся в этом year_month_day_last.

operator sys_days

Получите месяц, день и год в этом year_month_day_last количестве дней от эпохи для системных часов.

constexpr explicit operator sys_days() const noexcept;

Возвращаемое значение

Возвращает sys_days{this->year()/this->month()/this->day()}.

Пример

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    year_month_day_last ymdl{ June / last / 2021 };
    auto sd = sys_days(ymdl);
    std::cout << sd.time_since_epoch();

    return 0;
}
18808d

year

Получите год.

constexpr year year() const noexcept;

Возвращаемое значение

year.

ok

Проверьте, находятся ли year и month_day_last значения, хранящиеся в этом year_month_day_last диапазоне.

constexpr bool ok() const noexcept;

Возвращаемое значение

trueyear Значение и month_day_last значение, хранящиеся в этом year_month_day_last диапазоне, находятся в допустимом диапазоне. В противном случае — false.

operator+=

Добавьте к этому year_month_day_lastмесяцы или годы.

1) constexpr year_month_day_last& operator+=(const months& m) noexcept;
2) constexpr year_month_day_last& operator+=(const years& y) noexcept;

Параметры

m
Количество добавленных месяцев.

y
Количество добавляемых лет.

Возвращаемое значение

*this, который отражает результат добавления.

Пример: operator+=

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    year_month_day_last ymdl{ April / last / 1975 };

    std::cout << ymdl << '\n';

    ymdl += months{1};
    ymdl += years{1};

    std::cout << ymdl;
    
    return 0;
}
1975/Apr/last
1976/May/last

operator-=

Вычитайте месяцы или годы из этого year_month_day_last.

1) constexpr year_month_day_last& operator-=(const months& m) noexcept;
2) constexpr year_month_day_last& operator-=(const years& y) noexcept;

Параметры

m
Количество месяцев для вычитания.

y
Количество лет для вычитания.

Возвращаемое значение

*this, который отражает результат вычитания.

Пример: operator-=

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    year_month_day_last ymdl{ April / last / 1975 };

    std::cout << ymdl << '\n';

    ymdl -= months{1};
    ymdl -= years{1};

    std::cout << ymdl;
    
    return 0;
}
1975/Apr/last
1974/Mar/last

См. также

<chrono>
year
year_month
year_month_day
year_month_weekday
year_month_weekday_last
operator/
Справочник по файлам заголовков