命名空间
变体
操作

std::chrono::operator+, std::chrono::operator- (std::chrono::month)

来自 cppreference.com
< cpp‎ | chrono‎ | month
 
 
实用程序库
语言支持
类型支持 (基本类型,RTTI)
库功能测试宏 (C++20)
动态内存管理
程序实用程序
协程支持 (C++20)
可变参数函数
调试支持
(C++26)
三元比较
(C++20)
(C++20)(C++20)(C++20)
(C++20)(C++20)(C++20)
通用实用程序
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中已弃用)
整数比较函数
(C++20)(C++20)(C++20)   
(C++20)
交换类型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
通用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
基本字符串转换
(C++17)
(C++17)

 
 
 
定义在头文件 <chrono>
constexpr std::chrono::month operator+( const std::chrono::month& m,
                                        const std::chrono::months& ms ) noexcept;
(1) (自 C++20 起)
constexpr std::chrono::month operator+( const std::chrono::months& ms,
                                        const std::chrono::month& m ) noexcept;
(2) (自 C++20 起)
constexpr std::chrono::month operator-( const std::chrono::month& m,
                                        const std::chrono::months& ms ) noexcept;
(3) (自 C++20 起)
constexpr std::chrono::months operator-( const std::chrono::month& m1,
                                         const std::chrono::month& m2 ) noexcept;
(4) (自 C++20 起)
1,2)ms.count() 个月添加到 m。结果中保存的月份值通过首先计算 static_cast<long long>(unsigned(m)) + (ms.count() - 1) 获得,将其模 12 运算为范围为 [011] 的整数,然后加 1 来计算。
3)m 中减去 ms.count() 个月并返回结果。相当于 return m + -ms;
4) 如果 m1.ok()m2.ok() 都是 true,则返回一个 std::chrono::monthsm,使得 m.count() 位于范围 [011] 内,并且 m2 + m == m1.

内容

[编辑] 返回值

1-3) 一个 std::chrono::month,它保存着如上所述计算的月份值。
4) 一个 std::chrono::months,它代表 m1m2 之间的距离。

[编辑] 备注

只要计算不会溢出,(1-3) 总是返回一个有效的月份,即使 m.ok()false

减去两个month值的结果是类型为std::chrono::months的持续时间。该持续时间单位表示平均公历月的长度,结果持续时间与操作数所代表的特定月份的天数无关。例如,std::chrono::seconds(std::chrono::April - std::chrono::March) 不是三月份的秒数 (2678400s),而是 2629746s (30.436875 天)。

[编辑] 示例

#include <cassert>
#include <chrono>
 
int main()
{
    std::chrono::month m{6};
 
    m = m + std::chrono::months(2);
    assert(m == std::chrono::month(8));
 
    m = m - std::chrono::months(3);
    assert(m == std::chrono::month(5));
 
    constexpr std::chrono::months ms = std::chrono::month(8) - std::chrono::month(6);
    static_assert(ms == std::chrono::months(2));
}

[编辑] 参见

递增或递减月份
(公共成员函数) [编辑]
添加或减去若干个月
(公共成员函数) [编辑]