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 或 400 整除但不能被 100 整除的年份。

max

返回可能的最大年份。

static constexpr year max() noexcept;

返回值

year{32767}

min

返回可能的最小年份。

static constexpr year min() noexcept;

返回值

year{-32767}

ok

检查存储在此 year 中的值是否位于有效范围内。

constexpr bool ok() const noexcept;

返回值

如果年份值在范围 [-32676, 32767] 内,则为 true。 否则为 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
头文件引用