std::chrono::year_month_day_last
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <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 (public функция-элемент) | |
| изменяет момент времени на некоторое количество месяцев или лет (public функция-элемент) | |
| обращается к полям этого объекта (public функция-элемент) | |
| преобразуется в std::chrono::time_point (public функция-элемент) | |
| проверяет, представляет ли этот объект действительную дату (public функция-элемент) |
Функции, не являющиеся элементами
(C++20) |
сравнивает два значения year_month_day_last (функция) |
(C++20) |
добавляет или вычитает 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 and ymdl2 == ymdl3);
}
Возможный вывод:
Последний день текущего месяца (2023/Aug/last) равен: 31
Смотрите также
(C++20) |
представляет конкретный год, месяц и день (класс) |