std :: chrono将天数添加到当前日期

时间:2017-02-08 13:31:35

标签: c++ c++11 chrono

我想使用std :: chrono,以便根据有效期计算未来的日期。

到期时间是一个整数,指定从现在起#34;天。那么如何使用chrono lib来查找100天后的日期呢?

3 个答案:

答案 0 :(得分:5)

假设您有time_point。要为该对象添加天数,您只需将std::chrono::hours#include <chrono> std::chrono::system_clock::time_point t = std::chrono::system_clock::now(); std::chrono::system_clock::time_point new_t = t + std::chrono::hours(100 * 24);

一起使用即可
<Route path='/competitions/:league/:id/' component={Teams}></Route>

答案 1 :(得分:5)

Howard Hinnant的date library是免费的(开源);它使用日历服务扩展<chrono>

#include "date.h"
#include <iostream>

int
main()
{
    using namespace date;
    using namespace std::chrono;
    auto now = system_clock::now();
    auto today = floor<days>(now);
    year_month_day future = today + days{100};
    std::cout << future << '\n';
}

上述程序使用system_clock::now()获取当前时间,然后将time_point截断为精确度为days。然后添加100 days以查找将来的time_point,然后将其转换为人类消费的{year, month, day}结构。

目前的输出是:

2017-05-19

如果您想在没有第三方库的情况下进行此类计算,我强烈建议您创建一个chrono::duration days

using days = std::chrono::duration
    <int, std::ratio_multiply<std::ratio<24>, std::chrono::hours::period>>;

现在,您可以将days{100}添加到system_clock::time_point

答案 2 :(得分:1)

chrono库不包含日历功能。没有直接的方法可以准确地实现您的要求。

通过使用每天秒数的持续时间,您可以找到将来100天的时间戳。但是chrono没有计算日期的工具。