РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
536 of 815 menu

Класс year_month_day

Класс year_month_day из заголовочного файла <chrono> представляет собой календарную дату, состоящую из трех компонентов: года, месяца и дня месяца. Этот класс является частью библиотеки календарных типов, добавленной в стандарт C++20. В отличие от time_t и структуры tm, класс year_month_day хранит дату в виде отдельных полей и предоставляет удобный интерфейс для доступа к ним. Первый компонент - это год, второй - месяц, третий - день месяца.

Синтаксис

std::chrono::year_month_day ymd{year, month, day}; std::chrono::year_month_day ymd{std::chrono::year{2024}, std::chrono::month{3}, std::chrono::day{15}};

Пример

Давайте создадим объект year_month_day для даты 15 марта 2024 года и выведем его компоненты:

#include <iostream> #include <chrono> using namespace std; using namespace std::chrono; int main() { year_month_day ymd{year{2024}, month{3}, day{15}}; cout << "Year: " << int(ymd.year()) << endl; cout << "Month: " << unsigned(ymd.month()) << endl; cout << "Day: " << unsigned(ymd.day()) << endl; return 0; }

Результат выполнения кода:

"Year: 2024" "Month: 3" "Day: 15"

Пример

Давайте проверим, является ли дата корректной, используя метод ok:

#include <iostream> #include <chrono> using namespace std; using namespace std::chrono; int main() { year_month_day valid_date{year{2024}, month{3}, day{15}}; year_month_day invalid_date{year{2024}, month{13}, day{32}}; cout << "Valid date ok: " << boolalpha << valid_date.ok() << endl; cout << "Invalid date ok: " << boolalpha << invalid_date.ok() << endl; return 0; }

Результат выполнения кода:

"Valid date ok: true" "Invalid date ok: false"

Пример

Давайте получим текущую дату, используя системные часы, и выведем её:

#include <iostream> #include <chrono> using namespace std; using namespace std::chrono; int main() { auto now = system_clock::now(); year_month_day today{floor<days>(now)}; cout << "Today: " << int(today.year()) << "-" << unsigned(today.month()) << "-" << unsigned(today.day()) << endl; return 0; }

Результат выполнения кода:

"Today: 2024-3-15"

Пример

Давайте выполним арифметические операции с датой, добавив к ней несколько дней и месяцев:

#include <iostream> #include <chrono> using namespace std; using namespace std::chrono; int main() { year_month_day date{year{2024}, month{3}, day{15}}; auto new_date = date + days{10}; auto new_date2 = date + months{1}; cout << "Original: " << int(date.year()) << "-" << unsigned(date.month()) << "-" << unsigned(date.day()) << endl; cout << "After 10 days: " << int(new_date.year()) << "-" << unsigned(new_date.month()) << "-" << unsigned(new_date.day()) << endl; cout << "After 1 month: " << int(new_date2.year()) << "-" << unsigned(new_date2.month()) << "-" << unsigned(new_date2.day()) << endl; return 0; }

Результат выполнения кода:

"Original: 2024-3-15" "After 10 days: 2024-3-25" "After 1 month: 2024-4-15"

Смотрите также

  • класс time_point,
    который представляет момент времени
  • функция floor,
    которая округляет время до указанной точности
  • класс system_clock,
    который представляет системные часы
  • функция localtime,
    которая преобразует время в локальное
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить