std::chrono::year_month_day
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <chrono>
|
||
class year_month_day; |
(начиная с C++20) | |
Класс year_month_day представляет конкретный год, месяц и день. Это момент времени на основе поля с разрешением std::chrono::days. std::chrono::years- и std::chrono::months-ориентированная арифметика поддерживается напрямую. Неявное преобразование в и из std::chrono::sys_days позволяет эффективно выполнять std::chrono::days-ориентированные арифметические операции.
year_month_day это TriviallyCopyable StandardLayoutType.
Функции-элементы
создаёт year_month_day (public функция-элемент) | |
| изменяет момент времени на некоторое количество месяцев или лет (public функция-элемент) | |
| получает доступ к году, месяцу и дню, хранящимся в этом объекте (public функция-элемент) | |
| преобразуется в std::chrono::time_point (public функция-элемент) | |
проверяет, представляет ли year_month_day допустимую дату (public функция-элемент) |
Функции, не являющиеся элементами
(C++20) |
сравнивает два значения year_month_day (функция) |
(C++20) |
добавляет или вычитает year_month_day и некоторое количество лет или месяцев (функция) |
(C++20) |
выводит year_month_day в поток (шаблон функции) |
(C++20) |
разбирает year_month_day из потока в соответствии с предоставленным форматом (шаблон функции) |
Вспомогательные классы
поддержка форматирования для year_month_day (специализация шаблона класса) | |
| поддержка хэширования для std::chrono::year_month_day (специализация шаблона класса) |
Пример
Запустить этот код
#include <chrono>
#include <iostream>
int main()
{
const std::chrono::time_point now{std::chrono::system_clock::now()};
const std::chrono::year_month_day ymd{std::chrono::floor<std::chrono::days>(now)};
std::cout << "Текущий год: " << static_cast<int>(ymd.year())
<< ", месяц: " << static_cast<unsigned>(ymd.month())
<< ", день: " << static_cast<unsigned>(ymd.day()) << '\n'
<< "ymd: " << ymd << '\n';
}
Возможный вывод:
Текущий год: 2023, месяц: 9, день: 4
ymd: 2023-09-04