如何将 chrono::year_month_day 添加到 chrono::sys_seconds

How to add chrono::year_month_day to chrono::sys_seconds

我持有持续时间 year_month_day。有没有一种简单的方法可以将 year_month_day 持续时间添加到 time_point,例如 sys_seconds?

sys_seconds date1 = {};
sys_seconds dat2 = {};
year_month_day calDuration;
date1 = date2 + calDuration;    //error: no match for ‘operator+’ 

这是 chrono 在编译时为您捕获逻辑错误。添加 date2 + calDuration 类似于添加明天 + 今天。它只是没有意义。这就是为什么它是一个编译时错误。

您的意思可能是您有持续时间 yearsmonthsdays。这与名称相似的类型 yearmonthday 不同。复数形式是 chrono::durations,就像 minutesnanosecondsdays24hyearsmonths 是民历中这些单位的 平均 长度。

相反,单数形式 yearmonthday 是为民历中的某一天命名的日历成分,例如2020yDecember18d。正是这些单数形式构成了 year_month_day,例如2020y/December/18d.

请参阅 以深入了解 monthmonths 之间的区别。

有多种方法可以将单位 yearsmonths 添加到 time_point。有关该主题的深入探讨,请参阅