Пространства имён
Варианты
Действия

std::chrono::weekday::weekday

Материал из cppreference.com
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
 
 
<tbody> </tbody>
weekday() = default;
(1) (начиная с C++20)
constexpr explicit weekday( unsigned wd ) noexcept;
(2) (начиная с C++20)
constexpr weekday( const std::chrono::sys_days& dp ) noexcept;
(3) (начиная с C++20)
constexpr explicit weekday( const std::chrono::local_days& dp ) noexcept;
(4) (начиная с C++20)

Создаёт объект weekday.

1) Конструктор по умолчанию оставляет значение дня недели неинициализированным.
2) Создаёт объект weekday, содержащий значение дня недели wd. Если wd == 7, сохраняется значение 0. Если wd > 255, сохранённое значение не определено.
3) Создаёт объект weekday, представляющий день недели, которому соответствует dp. Этот конструктор определяет неявное преобразование из std::chrono::sys_days в weekday.
4) Создаёт объект weekday, представляющий день недели, которому соответствует dp, как если бы weekday(std::chrono::sys_days(dp.time_since_epoch())).

Пример

#include <chrono>
#include <iostream>
#include <iomanip>

int main()
{
    constexpr std::chrono::weekday friday{5};  // использует перегрузку (2)
    static_assert(friday == std::chrono::Friday);

    for (int y {2020}; y <= 2023; ++y) {
        const std::chrono::year cur_year{y};
        for (int cur_month{1}; cur_month != 13; ++cur_month) {
            const std::chrono::year_month_day ymd{ cur_year / cur_month / 13 };
            const std::chrono::weekday cur_weekday{ std::chrono::sys_days{ ymd } };  // (3)
            if (cur_weekday == friday)
                std::cout << ymd << " это " << friday << '\n';
        }
    }
}

Вывод:

2020-03-13 это пятница
2020-11-13 это пятница
2021-08-13 это пятница
2022-05-13 это пятница
2023-01-13 это пятница
2023-10-13 это пятница