std::chrono::operator+, std::chrono::operator- (std::chrono::year_month)
来自cppreference.com
| |
(1) | (C++20 起) |
| |
(2) | (C++20 起) |
| |
(3) | (C++20 起) |
| |
(4) | (C++20 起) |
| |
(5) | (C++20 起) |
| |
(6) | (C++20 起) |
| |
(7) | (C++20 起) |
1,2) 加上
dy.count() 年到 ym。3,4) 加上
dm.count() 月到 ym。5) 从
ym 减去 dy.count() 年。6) 从
ym 减去 dm.count() 月。7) 返回
ym1 与 ym2 所表示的两个时间点间以月计量的差。对于能转换到 std::chrono::years 与 std::chrono::months 两者的时长,若调用有歧义,则偏好 years 重载 (1,2,5)。
返回值
1,2)
std::chrono::year_month(ym.year() + dy, ym.month())3,4) A
year_month value z such that z - ym == dm5)
ym + -dy6)
ym + -dm7)
ym1.year() - ym2.year() + std::chrono::months(int(unsigned(ym1.month())) - int(unsigned(ym2.month())))
注解
两个 year_month 值相减的结果是 std::chrono::months 类型时长。此时长单位表示格里高利月的平均长度(30.436875 日),而产生的时长与问题中的实际日数无关。例如 2017y/3 - 2017y/2 的结果是 std::chrono::months(1),即使 2017 年二月只含 28 日。
示例
运行此代码
#include <cassert>
#include <chrono>
int main()
{
auto ym{std::chrono::year(2021)/std::chrono::July};
ym = ym + std::chrono::months(14);
assert(ym.month() == std::chrono::September);
assert(ym.year() == std::chrono::year(2022));
ym = ym - std::chrono::years(3);
assert(ym.month() == std::chrono::month(9));
assert(ym.year() == std::chrono::year(2019));
ym = ym + (std::chrono::September - std::chrono::month(2));
assert(ym.month() == std::chrono::April);
assert(ym.year() == std::chrono::year(2020));
}
参阅
以一定量的月和年为程度修改 year_month (公开成员函数) |