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.内容 |
[编辑] 返回值
1-3) 一个 std::chrono::weekday,它保存如上所述计算的星期几值。
4) 一个 std::chrono::days,它表示 wd1 和 wd2 之间的距离。
[编辑] 备注
只要计算没有溢出,(1-3) 总是返回一个有效的 weekday
,即使 wd.ok() 是 false。
[编辑] 例子
运行这段代码
#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
[编辑] 另请参阅
增加或减少星期几 (公共成员函数) | |
增加或减少天数 (公共成员函数) |