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


Класс day

Представляет день месяца. Например, 25-й день месяца.

Синтаксис

class day; // C++20

Замечания

Обычно day содержит значения в диапазоне [1, 31]. Он может содержать неотрицательных значений за пределами этого диапазона, но поведение не указано, если он не находится в диапазоне [0, 255].

Участники

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

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

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

Требования

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

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

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

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

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

1) day() = default;
2) explicit constexpr day(unsigned d) noexcept;

Параметры

d
Создание со значением day d.

Замечания

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

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

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

using namespace std::chrono;

int main()
{
    day d{1}; // day 1
    day d2 = 2d; // day 2

    std::cout << d << ", " << d2;

    return 0;
}
01, 02

ok

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

constexpr bool ok() const noexcept;

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

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

operator++

Добавьте 1 к значению дня.

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

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

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

Пример: operator++

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

using namespace std::chrono;

int main()
{
    day d{1};

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

    return 0;
}
01 02
02 02
03

Замечания

Если добавочный результат выходит из диапазона [0, 255], то сохраненное значение не указано.

operator--

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

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

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

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

Пример: operator--

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

int main()
{
    day d{5};
    std::cout << d << " " << --d << "\n"; // constexpr day& operator--() noexcept
    std::cout << d << " " << d-- << "\n"; // constexpr day operator--(int) noexcept
    std::cout << d << "\n";

    return 0;
}
05 04
04 04
03

Замечания

Если отложенный результат выходит из диапазона [0, 255], хранимое значение не указано.

operator+=

Добавьте дни к этому day.

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

Параметры

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

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

*this

Если результат находится за пределами диапазона [0, 255], то сохраненное значение не указано.

operator-=

Вычитать дни из этого day.

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

Параметры

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

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

*this. Если результат находится за пределами диапазона [0, 255], то сохраненное значение не указано.

operator unsigned

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

explicit constexpr operator unsigned() const noexcept;

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

Значение day

Пример: operator unsigned()

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

int main()
{
    chrono::day d{14d};
    unsigned dayValue = static_cast<unsigned>(d);
    cout << dayValue << "\n";
    
    return 0;
}
14

См. также

<chrono>
Класс month_day
Класс month_day_last
year_month_day
year_month_day_last
Справочник по файлам заголовков