Namespaces
Variants

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

From cppreference.net
定义于头文件 <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) 表示 wd1 wd2 之间时间间隔的 std::chrono::days 对象。

注释

只要计算不发生溢出, (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

参见

递增或递减星期值
(公开成员函数)
增加或减少指定天数
(公开成员函数)