命名空间
变体
操作

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

来自 cppreference.com
< cpp‎ | chrono‎ | weekday
 
 
实用程序库
语言支持
类型支持 (基本类型,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::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 运算,然后得到范围在 [06] 中的整数,而得到。
3)wd 中减去 d.count() 天。等价于 return wd + -d;.
4) 如果 wd1.ok()wd2.ok() 都为 true,则返回一个 std::chrono::daysd,使得 d.count() 位于范围 [06] 中,并且 wd2 + d == wd1.

内容

[编辑] 返回值

1-3) 一个 std::chrono::weekday,它保存如上所述计算的星期几值。
4) 一个 std::chrono::days,它表示 wd1wd2 之间的距离。

[编辑] 备注

只要计算没有溢出,(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

[编辑] 另请参阅

增加或减少星期几
(公共成员函数) [编辑]
增加或减少天数
(公共成员函数) [编辑]