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


Класс month

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

Синтаксис

class month; // C++20

Замечания

Обычно month содержит значения в диапазоне [1, 12]. Он также может содержать не отрицательные значения за пределами этого диапазона. См . константы месяца ниже для констант, которые можно использовать с классом month .

Участники

Имя Описание
Конструкторы Создайте month
ok Убедитесь, что значение месяца находится в допустимом диапазоне [1,12].
operator++ Добавим month.
operator+= Добавьте в это monthчисло месяцев.
operator-- Это уменьшается month.
operator-= Вычитает указанное количество месяцев из этого month.
operator unsigned month Получите значение.

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

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

Требования

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

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

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

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

Создайте month

1) month() = default;
2) explicit constexpr month(unsigned m) noexcept;

Параметры

m
Создание со значением month m.

Замечания

1) Конструктор по умолчанию не инициализирует значение дня.
2) Создание month значения дня, инициализированного в m.

ok

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

constexpr bool ok() const noexcept;

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

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

operator++

Увеличьте значение месяца.

1) constexpr month& operator++() noexcept;
2) constexpr month operator++(int) noexcept;

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

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

Пример: operator++

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

using namespace std::chrono;

int main()
{
    month m{ January };
    month m2{4}; // April

    std::cout << m << " " << ++m << "\n"; // constexpr month& operator++() noexcept
    std::cout << m << " " << m++ << "\n"; // constexpr month operator++(int) noexcept
    std::cout << m << "\n";
    std::cout << m2 << "\n";

    return 0;
}
Jan Feb
Feb Feb
Mar
Apr

Замечания

Если результат превышает 12, оно равно 1.

operator--

Вычитает 1 из значения месяца.

1) constexpr month& operator--() noexcept;
2) constexpr month operator--(int) noexcept;

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

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

Пример: operator--

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

using namespace std;
using namespace std::chrono;

int main()
{
    month m{May};

    cout << m << " " << --m << "\n"; // constexpr month& operator++() noexcept
    cout << m << " " << m-- << "\n"; // constexpr month operator++(int) noexcept
    cout << m << "\n";

    return 0;
}
May Apr
Apr Apr
Mar

Замечания

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

operator+=

Добавьте месяцы к этому month.

constexpr month& operator+=(const months& m) noexcept;

Параметры

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

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

*this

operator-=

Вычитается months из этого month.

constexpr month& operator-=(const months& m) noexcept;

Параметры

m
Месяцы вычитания.

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

*this.

operator unsigned

Получите неподписаемое month значение.

explicit constexpr operator unsigned() const noexcept;

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

Неподписаемое значение этого объекта month

Пример: operator unsigned()

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

using namespace std::chrono;

int main()
{
    month m{July};
    unsigned monthValue = static_cast<unsigned>(m);
    std::cout << monthValue << "\n";

    return 0;
}
7

Константы месяца

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

// Calendrical constants
inline constexpr month January{1};
inline constexpr month February{2};
inline constexpr month March{3};
inline constexpr month April{4};
inline constexpr month May{5};
inline constexpr month June{6};
inline constexpr month July{7};
inline constexpr month August{8};
inline constexpr month September{9};
inline constexpr month October{10};
inline constexpr month November{11};
inline constexpr month December{12};

См. также

<chrono>
month_day Класс
month_day_last Класс
month_weekday Класс
Класс month_weekday_last