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


Класс year_month_weekday

Представляет определенный год, месяц и nth будний день месяца.

Синтаксис

class year_month_weekday; // C++20

Замечания

year_month_weekday поддерживает арифметические арифметические и месяцы, но не арифметические арифметики, ориентированные на дни. Для арифметики, ориентированной на дни, используйте sys_days преобразование для преобразования в арифметику sys_days, поддерживающую арифметику с днями.

year_month_weekday — это тип класса с простым копированием и стандартным макетом.

Участники

Имя Описание
Constructor Создайте объект year_month_weekday с указанным месяцем и будним днем.
index Получение индекса дня недели.
month Получите значение месяца.
ok Проверьте, является ли допустимым year_month_weekday .
operator+= Добавьте указанное количество месяцев или лет.
operator-= Вычитает указанное количество месяцев или лет.
operator local_days Получите количество дней от system_clock эпохи до этогоyear_month_weekday.local_days
operator sys_days Получите количество дней от system_clock эпохи до этогоyear_month_weekday.sys_days
weekday Получите день недели.
weekday_indexed Получите [weekday_indexed], хранящийся в этом year_month_weekdayфайле.
year Получите год.

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

Имя Описание
operator+ Добавьте месяцы или годы.
operator- Вычитайте месяцы или годы.
operator== Определите, равны ли два year_month_weekday значения.
operator<< Выводит объект в заданный year_month_weekday поток.

Требования

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

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

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

Конструктор

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

// 1)
year_month_weekday() = default

// 2)
constexpr year_month_weekday(const year& y, const month& m, const weekday_indexed& wdi) noexcept;

// 3) 
constexpr explicit year_month_weekday(const local_days& dp) noexcept;

// 4)
constexpr year_month_weekday(const sys_days& dp) noexcept;

Параметры

m
Значение типа month.

dp
A sys_days или local_days

wdi
Значение типа weekday.

y
Значение типа year.

Примечания: конструктор

1) Конструктор по умолчанию не инициализирует ни одно из полей.

2) Создает объект year_month_weekday , соответствующий указанному year, monthи weekday_indexed.

3) Создает объект year_month_weekday , соответствующий дате, sys_days{dp.time_since_epoch()}представленной .

4) Создает объект year_month_weekday , соответствующий дате, dpпредставленной . Для любого year_month_weekday (ymdl), для которого ok() используетсяtrue, сравнение с year_month_weekday{sys_days{ymdl}} operator== будетtrue.

Сведения о синтаксисе C++20, используемом для указания дат, см. в разделе operator/

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

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

using namespace std::chrono;

int main()
{
    year_month_weekday ymw{1997y / January / Wednesday[1]};
    std::cout << ymw << '\n';
    
    return 0;
}
1997/Jan/Wed[1]

index

Получите индекс недели дня недели в этом year_month_weekday.

constexpr unsigned index() const noexcept;

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

Индекс дня недели. Например, если будний день был первым в среду недели, индекс будет 1.

month

Получите значение месяца.

constexpr month month() const noexcept;

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

Значение типа month.

ok

Проверьте допустимость значения, хранящегося в этом year_month_weekday параметре. Значение year, monthи weekday_index хранящиеся в этом year_month_weekday случае должны быть ok для возвращаемой trueфункции. В противном случае возвращается false.

constexpr bool ok() const noexcept;

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

trueyear_month_weekday Значение допустимо. В противном случае — false.
Допустимо year_month_weekday , если month weekday_indexed допустимый и допустимый значение.

operator+=

Добавьте к этому year_month_weekdayмесяцы или годы.

1) constexpr year_month_weekday& operator+=(const months& m) noexcept;
2) constexpr year_month_weekday& operator+=(const years& y) noexcept;

Параметры

m
Количество добавленных месяцев.

y
Количество добавляемых лет.

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

*this который отражает результат добавления.

Пример: operator+=

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

using namespace std::chrono;

int main()
{
    year_month_weekday ymw{1997y / January / Wednesday[1]};
    std::cout << ymw << '\n';

    ymw += months{1};
    ymw += years{1};

    std::cout << ymw << '\n';
    
    return 0;
}
1997/Jan/Wed[1]
1998/Feb/Wed[1]

operator-=

Вычитайте месяцы или годы из этого year_month_weekday.

1) constexpr year_month_weekday& operator-=(const months& m) noexcept;
2) constexpr year_month_weekday& operator-=(const years& y) noexcept;

Параметры

m
Количество месяцев для вычитания.

y
Количество лет для вычитания.

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

*this который отражает результат вычитания.

Пример: operator-=

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

using namespace std::chrono;

int main()
{
    year_month_weekday ymw{1997y / January / Wednesday[1]};
    std::cout << ymw << '\n';

    ymw -= months{1};
    ymw -= years{1};

    std::cout << ymw << '\n';
    
    return 0;
}
1997/Jan/Wed[1]
1995/Dec/Wed[1]

operator local_days

Получение количества дней от system_clock эпохи (1/1/1970) к этому year_month_weekday как local_days

constexpr explicit operator local_days() const noexcept;

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

Если ok(), возвращает количество дней как local_days{sys_days{*this}.time_since_epoch()}. В противном случае возвращаемое значение не указано.

operator sys_days

Получите количество дней от system_clock эпохи (1/1/1970) к этому year_month_day как sys_days.

constexpr operator sys_days() const noexcept;

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

Если ok()возвращает дату sys_days , представляющую дату, которая находится (index() - 1) * 7 через несколько дней после первого weekday() year()/month()из . Если index() это 0так, возвращаемый sys_days представляет дату 7 дней до первого weekday() из year()/month()них.

weekday

weekday Получите хранящийся в хранимом weekday_indexed в этом year_month_weekdayфайле.

constexpr weekday weekday() const noexcept;

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

Значение типа weekday.

weekday_indexed

Получите хранимый weekday_indexed в этом year_month_weekdayобъекте.

constexpr weekday_indexed weekday_indexed() const noexcept;

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

Значение типа weekday_indexed.

year

Получите значение года.

constexpr year year() const noexcept;

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

Значение типа year.

См. также

<chrono>
year
year_month
year_month_day
year_month_day_last
year_month_weekday_last
operator/Справочник по файлам заголовков