std::chrono::operator+, std::chrono::operator- (std::chrono::weekday)
來自 cppreference.com
定義於標頭檔案 <chrono> |
||
constexpr std::chrono::weekday operator+( const std::chrono::weekday& wd, const std::chrono::days& d ) noexcept; |
(1) | (C++20 起) |
constexpr std::chrono::weekday operator+( const std::chrono::days& d, const std::chrono::weekday& wd ) noexcept; |
(2) | (C++20 起) |
constexpr std::chrono::weekday operator-( const std::chrono::weekday& wd, const std::chrono::days& d ) noexcept; |
(3) | (C++20 起) |
constexpr std::chrono::days operator-( const std::chrono::weekday& wd1, const std::chrono::weekday& wd2 ) noexcept; |
(4) | (C++20 起) |
1,2) 將 d.count() 天數加到 wd。結果中持有的工作日值透過首先計算 static_cast<long long>(wd.c_encoding()) + d.count(),然後將其對 7 取模,得到範圍
[
0,
6]
內的整數來計算。3) 從 wd 中減去 d.count() 天數。等價於 return wd + -d;。
4) 如果 wd1.ok() 和 wd2.ok() 都為 true,則返回一個 std::chrono::days 值 d,使得 d.count() 在範圍
[
0,
6]
內,並且 wd2 + d == wd1。否則返回的值是未指定的。目錄 |
[edit] 返回值
1-3) 一個 std::chrono::weekday,其中包含按上述方式計算的工作日值。
4) 一個 std::chrono::days,表示 wd1 和 wd2 之間的距離。
[edit] 注意
只要計算不溢位,即使 wd.ok() 為 false,(1-3) 始終返回有效的 weekday
。
[edit] 示例
執行此程式碼
#include <chrono> #include <iostream> int main() { std::cout << std::boolalpha; std::chrono::weekday wd{4}; wd = wd + std::chrono::days(2); std::cout << (wd == std::chrono::weekday(6)) << ' ' << (wd == std::chrono::Saturday) << ' '; wd = wd - std::chrono::days(3); std::cout << (wd == std::chrono::weekday(3)) << ' ' << (wd == std::chrono::Wednesday) << ' '; wd = std::chrono::Tuesday; wd = wd + std::chrono::days{8}; // (((2 + 8) == 10) % 7) == 3; std::cout << (wd == std::chrono::Wednesday) << ' '; wd = wd + (std::chrono::Sunday - std::chrono::Thursday); // (3 + 3) == 6 std::cout << (wd == std::chrono::Saturday) << '\n'; }
輸出
true true true true true true
[edit] 參閱
增加或減少星期幾 (公共成員函式) | |
增加或減少天數 (公共成員函式) |