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


Класс year

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

Синтаксис

class year; // C++20

Замечания

Может year содержать годовое значение от -32767 до 32767.

Участники

Имя Описание
Конструкторы Создание year
is_leap Определите, является ли год високосным годом.
max Возвращает наибольшее возможное значение года.
min Возвращает наименьшее возможное значение года.
ok Убедитесь, что значение года находится в допустимом диапазоне [-32767, 32767].
operator+ Унарный плюс.
operator++ Увеличение года.
operator+= Добавьте указанное число лет в это year.
operator- Унарный минус.
operator-- Уменьшение года.
operator-= Вычитает указанное количество лет из этого year.
operator int year Получите значение.

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

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

Требования

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

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

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

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

Создайте year

1) year() = default;
2) explicit constexpr year(unsigned y) noexcept;

Параметры

y
Создание со значением year y.

Замечания

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

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

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

using namespace std::chrono;

int main()
{
    year y{2020};
    year y2 = 2021y;
    
    std::cout << y << ", " << y2;

    return 0;
}
2020, 2021

is_leap

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

constexpr bool is_leap() const noexcept;

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

true Если значение года является високосным годом. В противном случае — false. Високосный год является годом, делимым на 4, но не 100-или делится на 400.

max

Возвращает самый большой возможный год.

static constexpr year max() noexcept;

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

year{32767}

min

Возвращает наименьший возможный год.

static constexpr year min() noexcept;

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

year{-32767}

ok

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

constexpr bool ok() const noexcept;

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

true Значение года в диапазоне [-32676, 32767]. В противном случае — false.

operator+

Применить унарный плюс.

constexpr year operator+() const noexcept;

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

Возвращает *this.

Пример: унарный operator+

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

using namespace std::chrono;

int main()
{
   year y{-1};
   std::cout << +y;
   return 0;
}
-0001

operator++

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

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

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

1) Возвращает ссылку на этот год после увеличения (приращение постфикса).
2) Возвращает копию year, прежде чем она была добавлена (добавочный префикс).

Пример: operator++

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

using namespace std::chrono;

int main()
{
    year y{2021};

    std::cout << y << " " << ++y << "\n"; // constexpr year& operator++() noexcept
    std::cout << y << " " << y++ << "\n"; // constexpr year operator++(int) noexcept
    std::cout << y << "\n";
    return 0;
}
2021 2022
2022 2022
2023

Замечания

Если добавочный результат превышает 32767, он переполнен до -32768

operator-

Унарный минус. Нейтэйт year.

constexpr year operator-() const noexcept; // C++20

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

Возвращает отрицаемую копию year.

Пример: унарный operator-

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

using namespace std::chrono;

int main()
{
   year y{1977};
   std::cout << -y << '\n';

   return 0;
}
-1977

operator--

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

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

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

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

Пример: operator--

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

using namespace std::chrono;

int main()
{
   year y{2021};

    std::cout << y << " " << --y << "\n"; // constexpr year& operator++() noexcept
    std::cout << y << " " << y-- << "\n"; // constexpr year operator++(int) noexcept
    std::cout << y << "\n";

    return 0;
}
2021 2020
2020 2020
2019

Замечания

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

operator+=

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

constexpr year& operator+=(const years& y) noexcept;

Параметры

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

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

*this Если добавочный результат превышает 32767, он переполняется до -32768.

operator-=

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

constexpr year& operator-=(const years& y) noexcept;

Параметры

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

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

*this. Если отложенный результат меньше -32768, он имеет значение 32767.

operator int

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

explicit constexpr operator int() const noexcept;

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

Значение year

Пример: operator int()

// compile using: /std:c++latest

 #include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    year y{2020};
    int yearValue = static_cast<int>(y);
    std::cout << yearValue;

    return 0;
}
2020

См. также

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