std::chrono::operator+, std::chrono::operator- (std::chrono::year)
来自cppreference.com
| |
(1) | (C++20 起) |
| |
(2) | (C++20 起) |
| |
(3) | (C++20 起) |
| |
(4) | (C++20 起) |
1,2) 对
y 加 ys.count() 年。3) 从
y 减去 ys.count() 年。4) 返回
y1 与 y2 间按年计算的差。返回值
1,2)
std::chrono::year(int(y) + ys.count())3)
std::chrono::year(int(y) - ys.count())4)
std::chrono::years(int(y1) - int(y2))注解
若 (1-3) 产生的年份值在范围 [-32767, 32767] 外,则实际存储的值未指定。
两个 year 值相减的结果是 std::chrono::years 类型的时长。此时长单位表示格里高利年的平均长度,而结果与操作数所表示的具体年中的日数无关。例如 2018y - 2017y 的结果是 std::chrono::years(1),它表示 365.2425 日,而非 365 日。
示例
运行此代码
#include <cassert>
#include <chrono>
int main()
{
std::chrono::year y{2020};
y = std::chrono::years(12) + y; // 重载 (2): duration + time point
assert(y == std::chrono::year(2032));
y = y - std::chrono::years(33); // 重载 (3): time point - duration
assert(y == std::chrono::year(1999));
// y = std::chrono::years(33) - y; // 不支持: duration - time point
using namespace std::chrono;
constexpr std::chrono::years ys = 2025y - 2020y; // 重载 (4)
static_assert(ys == std::chrono::years(5));
}
返回值
| 自增或自减 month ( std::chrono::month 的公开成员函数) | |
| 加上或减去月数 ( std::chrono::month 的公开成员函数) |