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