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 (открытая функция-член) |
|
| изменяют временную точку на заданное количество месяцев или лет (открытая функция-член) |
|
| предоставляют доступ к полям этого объекта (открытая функция-член) |
|
преобразует в std::chrono::time_point (открытая функция-член) |
|
| проверяет, представляет ли этот объект допустимую дату (открытая функция-член) |
Функции, не являющиеся членами
|
(C++20) | сравнивает два значения year_month_day_last (функция) |
|
(C++20) | прибавляет или вычитает year_month_day_last и заданное количество лет или месяцев (функция) |
|
(C++20) | выводит year_month_day_last в поток (шаблон функции) |
Вспомогательные классы
|
(C++20) | поддержка форматирования для 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
См. также
|
(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