【问题标题】:How to add chrono::year_month_day to chrono::sys_seconds如何将 chrono::year_month_day 添加到 chrono::sys_seconds
【发布时间】:2021-03-29 02:54:50
【问题描述】:

我持有年月日的期限。有没有一种简单的方法可以将 year_month_day 持续时间添加到像 sys_seconds 这样的 time_point?

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

【问题讨论】:

  • 我不认为year_month_day 是一个持续时间。这是一个时间点,不是吗? sys_secondstime_point。添加两个时间点是没有意义的。重新考虑你的问题。

标签: c++ chrono


【解决方案1】:

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

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

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

请参阅this SO answer,深入了解monthmonths 之间的区别。

有多种方法可以将单位 yearsmonths 添加到 time_point。请参阅 this SO answer 以深入了解该主题。

【讨论】:

  • 啊 - 好的 - 你的权利我没有注意到我们有两个 std::chrono::month 和 std::chrono::months 等完全不同的东西。我想我会定义一个 years_months_days 然后保存我的日历持续时间。
  • 听起来不错。在这种情况下,我猜你想要做的是日历算术,而不是yearsmonths 单位的时间算术。请参阅stackoverflow.com/a/43018120/576911 了解有关此区别以及如何处理的更多详细信息。
猜你喜欢
  • 1970-01-01
  • 2021-11-26
  • 2023-03-03
  • 1970-01-01
  • 2021-01-12
  • 1970-01-01
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多