cat*_*eof 3 c++ c++11 c++-chrono
我想使用std :: chrono,以便根据到期时间来计算未来的日期.
到期时间是一个整数,指定"从现在起的天数".那么如何使用chrono lib来查找100天后的日期呢?
说你有time_point.为了天添加到对象,你可以只使用operator+有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);
Run Code Online (Sandbox Code Playgroud)
Howard Hinnant的日期库是免费的(开源); 它<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';
}
Run Code Online (Sandbox Code Playgroud)
上面的程序获取当前时间system_clock::now(),然后截断它time_point的精度为days.然后100 days添加以找到未来time_point,然后将其转换为{year, month, day}供人类消费的结构.
目前的输出是:
2017-05-19
Run Code Online (Sandbox Code Playgroud)
如果你想在没有第三方库的情况下进行这种类型的计算,我强烈建议你chrono::duration days这样做:
using days = std::chrono::duration
<int, std::ratio_multiply<std::ratio<24>, std::chrono::hours::period>>;
Run Code Online (Sandbox Code Playgroud)
现在你可以添加days{100}到system_clock::time_point.