我吊顶time_point旁边足足五分钟,这是很容易的:
template <int N>
using minutes = std::chrono::duration<int, std::ratio_multiply<std::ratio<N>, std::chrono::minutes::period>>;
const auto now = std::chrono::system_clock::now();
const auto begin = ceil<minutes<5>>(now);
我不知道如何设置的分钟数在运行时。
这里是一个将采取任何ceil
,圆其到下一个time_point
,同时给予结果Duration m
的精度Duration{1}
功能:
template <class Clock, class Duration1, class Duration2>
constexpr
auto
ceil(std::chrono::time_point<Clock, Duration1> t, Duration2 m) noexcept
{
using R = std::chrono::time_point<Clock, Duration2>;
auto r = std::chrono::time_point_cast<Duration2>(R{} + (t - R{})/m*m);
if (r < t)
r += m;
return r;
}
它可以使用,如:
const auto begin = ceil(system_clock::now(), 5min);
const auto begin = ceil(system_clock::now(), 10min);
const auto begin = ceil(system_clock::now(), 10ms);
R
。time_point
t
被截断为duration
m
(朝向零)。m
。如果24小时不m
整除,结果可能是违反直觉的。