Namespaces
Variants

std::chrono:: year_month_day_last

From cppreference.net
Определено в заголовке <chrono>
class year_month_day_last ;
(начиная с C++20)

Класс year_month_day_last представляет последний день конкретного года и месяца. Это полевая точка времени с разрешением std::chrono::days , с ограничением, что может представлять только последний день месяца.

std::chrono::years - и std::chrono::months -ориентированная арифметика поддерживается напрямую. Неявное преобразование в std::chrono::sys_days позволяет эффективно выполнять std::chrono::days -ориентированные арифметические операции.

year_month_day_last является TriviallyCopyable StandardLayoutType .

Содержание

Функции-члены

создает объект year_month_day_last
(публичная функция-член)
изменяет временную точку на некоторое количество месяцев или лет
(публичная функция-член)
предоставляет доступ к полям этого объекта
(публичная функция-член)
преобразует в std::chrono::time_point
(публичная функция-член)
проверяет, представляет ли этот объект корректную дату
(публичная функция-член)

Функции, не являющиеся членами класса

сравнивает два значения year_month_day_last
(функция)
добавляет или вычитает year_month_day_last и некоторое количество лет или месяцев
(функция)
(C++20)
выводит year_month_day_last в поток
(шаблон функции)

Вспомогательные классы

поддержка форматирования для year_month_day_last
(специализация шаблона класса)
поддержка хеширования для std::chrono::year_month_day_last
(специализация шаблона класса)

Пример

#include <chrono>
#include <iostream>
int main()
{
    const auto ymd = std::chrono::year_month_day
    {
        std::chrono::floor<std::chrono::days>(std::chrono::system_clock::now())
    };
    const std::chrono::year_month_day_last ymdl
    {
        ymd.year(), ymd.month() / std::chrono::last
    };
    std::cout << "Последний день текущего месяца (" << ymdl << ") это: "
              << std::chrono::year_month_day{ymdl}.day() << '\n';
    // Объект 'last' может быть размещен везде, где допустимо размещение 'day':
    using namespace std::chrono;
    constexpr std::chrono::year_month_day_last
        ymdl1 = 2023y / February / last,
        ymdl2 = last / February / 2023y,
        ymdl3 = February / last / 2023y;
    static_assert(ymdl1 == ymdl2 && ymdl2 == ymdl3);
}

Возможный вывод:

Последний день текущего месяца (2023/Aug/last) это: 31

Смотрите также

представляет определённый year , month и day
(класс)