我想使用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