Поделиться через


Класс weekday

Представляет день недели в григорианском календаре. Например, вторник.

Синтаксис

class weekday; // C++20

Замечания

Может weekday содержать значение [0, 255], но обычно содержит значение [0, 6] для представления дня недели. См . константы weekday ниже для констант, которые можно использовать с классом weekday .

Участники

Имя Описание
Конструкторы Создайте weekday
c_encoding weekday Получите значение.
iso_encoding Получите значение ISO 8601 weekday .
ok Проверьте, является ли weekday значение допустимым.
operator++ Добавим weekday.
operator+= Добавьте в это weekdayуказанное число дней недели.
operator-- Декремент .weekday
operator-= Вычитает указанное количество дней недели из этого weekday.
operator[] Создайте weekday_indexed или weekday_last из этогоweekday.

Не являющиеся членами

Имя Описание
from_stream Синтаксический weekday анализ из заданного потока с помощью указанного формата.
operator+ Добавьте в это weekdayчисло дней недели.
operator- Вычитайте указанное количество дней недели из этого weekdayили найдите разницу между двумя weekday объектами.
operator== Определите, равны ли два weekday объекта.
operator<< Выводится weekday в поток.

Требования

Заголовок: <chrono> с C++20

Пространство имен: std::chrono

Параметр компилятора: /std:c++latest

Конструкторы

Создает документ weekday.

1) weekday() = default; // C++20
2) explicit constexpr weekday(unsigned wd) noexcept; // C++20
3) constexpr weekday(const sys_days& dp) noexcept; // C++20
4) explicit constexpr weekday(const local_days& dp) noexcept; // C++20

Параметры

dp
weekday Создайте использование дня неделиdp.

wd
Создание со значением weekday wd.

Замечания

1) Конструктор по умолчанию не инициализирует значение недели.
2) Создание weekday с указанным значением.
Если wd значение равно 7, weekday оно создается со значением 0.
Не инициализировать значения более 255 или результат weekday будет иметь неопределенное значение.
3) Вычисляет, какой день недели соответствует std::chrono::sys_days значению dpи создает weekday использование этого дня.
4) Вычисляет weekday день недели, соответствующий std::chrono::local_days значениюdp, и создает его с помощью этого дня. Он ведет себя так, как если бы вы создали weekday использование weekday(std::chrono::sys_days(dp.time_since_epoch())).

Пример. Создание weekday

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    weekday wd{ Wednesday };
    weekday wd2{ 3 };
    std::cout << wd << '\n' << wd2;
    
    return 0;
}
Wednesday
Wednesday

c_encoding

constexpr unsigned c_encoding() const noexcept;

Возвращаемое значение

Значение дня недели.

iso_encoding

Значение дня недели, но с воскресеньем (0) интерпретируется как 7 на ISO 8601.

constexpr unsigned iso_encoding() const noexcept;

Возвращаемое значение

Значение дня недели.

ok

Проверяет, находится ли значение, хранящееся в weekday, в допустимом диапазоне.

constexpr bool is_leap() const noexcept;

Возвращаемое значение

true Значение недели, если значение дня недели находится в диапазоне [0, 6]. В противном случае — false.

operator++

Добавьте 1 в значение недели.

1) constexpr std::chrono::weekday& operator++() noexcept;
2) constexpr std::chrono::weekday operator++(int) noexcept;

Возвращаемое значение

1) Ссылка на *this будний день после увеличения (приращение постфикса).
2) Копия , weekdayпрежде чем она была добавлена (добавочный префикс).

Пример: operator++

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std;
using namespace std::chrono;

int main()
{
    std::chrono::weekday wd{Thursday};

    std::cout << wd << " " << ++wd << "\n"; // constexpr weekday& operator++() noexcept
    std::cout << wd << " " << wd++ << "\n"; // constexpr weekday operator++(int) noexcept
    std::cout << wd << "\n";

    return 0;
}
Thu Fri
Fri Fri
Sat

Замечания

Добавочное значение равно модулю 7. Он всегда будет находиться в диапазоне [0, 6].

operator--

Вычитать 1 из weekday значения.

1) constexpr std::chrono::weekday& operator--() noexcept;
2) constexpr std::chrono::weekday operator--(int) noexcept;

Возвращаемое значение

1) Ссылка на *this weekday после ее уменьшения (постфикс декремента).
2) Копия до его уменьшения weekday (префикс декремента).

Пример: operator--

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std;
using namespace std::chrono;

int main()
{
    weekday y = weekday{Thursday};

    cout << y << " " << --y << "\n"; // constexpr weekday& operator--() noexcept
    cout << y << " " << y-- << "\n"; // constexpr weekday operator--(int) noexcept
    cout << y << "\n";

    return 0;
}
Thu Wed
Wed Wed
Tue

Замечания

Если отложенный результат меньше 0, он имеет значение 6.

operator+=

Добавьте дни в weekday.

constexpr weekday& operator+=(const days& d) noexcept;

Параметры

*d*
Количество дней, которое нужно добавить.

Возвращаемое значение

Значение *this + d. Результат будет 7 в диапазоне [0, 6].

operator-=

Вычитать дни из weekday.

constexpr weekday& operator-=(const days& d) noexcept;

Параметры

*d*
Количество дней для вычитания.

Возвращаемое значение

Значение *this - d. Результат будет 7 в диапазоне [0, 6].

operator[]

Создайте weekday_indexed или weekday_last из этогоweekday.

1) std::chrono::weekday_indexed(*this, index) // C++20
2) std::chrono::weekday_last(*this) // C++20

Возвращаемое значение

1) std::chrono::weekday_indexed(*this, index)
2) std::chrono::weekday_last(*this)

Пример: operator[]

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std;
using namespace std::chrono;

int main()
{
    constexpr auto firstMondayInJanuary =
        year_month_day{ Monday[2] / January / 2021y };

    std::cout << firstMondayInJanuary << "\n";

    constexpr auto lastMondayInJanuary = 
        year_month_day{ Tuesday[last] / January / 2021y };
    std::cout << lastMondayInJanuary << "\n";
}
2021-01-11
2021-01-26

Константы еженедельного дня

(C++20) Заголовок <chrono> определяет следующие константы, которые можно использовать для weekday повышения удобства, безопасности типов и удобства обслуживания кода. Эти константы находятся в области, когда std::chrono находится в области.

// Calendrical constants
inline constexpr std::chrono::weekday Sunday{0};
inline constexpr std::chrono::weekday Monday{1};
inline constexpr std::chrono::weekday Tuesday{2};
inline constexpr std::chrono::weekday Wednesday{3};
inline constexpr std::chrono::weekday Thursday{4};
inline constexpr std::chrono::weekday Friday{5};
inline constexpr std::chrono::weekday Saturday{6};

См. также

Класс weekday_last
Класс weekday_indexed
<chrono>
Справочник по файлам заголовков