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 является TriviallyCopyable StandardLayoutType.

Члены-функции

(конструктор)
создаёт объект 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/w/cpp/chrono/year_month_day_last

Spec-Zone.ru

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