month
类
表示一年中的一个月。 例如,7月。
语法
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 减去指定的月份数。 返回新的 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;
返回值
如果月份值在范围 [1,12] 内,则为 true
。 否则为 false
。
operator++
递增月份值。
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::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-=
从此 month
减去 months
。
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
类