Класс 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>
Справочник по файлам заголовков