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
头文件引用