我想使用std :: chrono来查找基于过期时间计算将来的日期。std :: chrono将日期添加到当前日期
过期期限是指定“从现在开始”的整数。那么如何使用chrono lib来查找100天后的日期呢?
我想使用std :: 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);
计时库不包含日历功能。没有直接的方法来准确地实现你所要求的。
你可以找到一个时间戳,是值得的秒仅限100天未来使用的持续时间为每天秒的比率。但是chrono没有计算日期的工具。
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
。
看起来不错,我会跟进。 – cateof
任何计划你会在std的'
@PiotrSkotnicki:关于它的工作:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0355r1.html成功的机会是50/50。 –
也可以'使用命名空间std :: litterals',然后写'new_t = t +(100 * 24h)',只用于样式 – tforgione
好吧,很好,我可以将time_point转换为纪元吗?我想以一种可以从其他服务中移植的格式存储数据库中的那一刻 – cateof
@DragonRock现在编辑你的评论已经太晚了,但正确的拼写是'std :: literals'而且它是C++ 14 – rustyx