Spec-Zone.ru › C++

std::chrono::year_month_day_last

Определён в заголовочном файле <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 является тривиально копируемым типом со стандартной компоновкой.

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

(конструктор)
создаёт объект year_month_day_last
(открытая функция-член)
operator+=operator-=
изменяют временную точку на заданное количество месяцев или лет
(открытая функция-член)
yearmonthdaymonth_day_last
предоставляют доступ к полям этого объекта
(открытая функция-член)
operator sys_daysoperator local_days
преобразует в std::chrono::time_point
(открытая функция-член)
ok
проверяет, представляет ли этот объект допустимую дату
(открытая функция-член)

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

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

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

std::formatter<std::chrono::year_month_day_last>
(C++20)
поддержка форматирования для year_month_day_last
(специализация шаблона класса)
std::hash<std::chrono::year_month_day_last>
(C++26)
поддержка хеширования для 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 << "The last day of present month (" << ymdl << ") is: "
              << std::chrono::year_month_day{ymdl}.day() << '\n';
    
    // The 'last' object can be placed wherever it is legal to place a '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);
}

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

The last day of present month (2023/Aug/last) is: 31

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/chrono/year_month_day_last

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API