名稱空間
變體
操作

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

來自 cppreference.com
< cpp‎ | chrono‎ | month
 
 
 
 
定義於標頭檔案 <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 之間的距離。

[編輯] 注意

只要計算不溢位,即使 m.ok()false(1-3) 也總是返回一個有效的月份。

兩個 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));
}

[編輯] 參閱

增加或減少月份
(公開成員函式) [編輯]
增加或減少月份數
(公開成員函式) [編輯]