gpt4 book ai didi

c++ - 将 time_point 降低到给定持续时间的推荐方法

转载 作者:行者123 更新时间:2023-12-01 23:00:27 28 4
gpt4 key购买 nike

我有一个用户提供的持续时间

const int period_seconds = cfg.period_seconds;

我想floor一个time_point到那个duration的粒度。

我看到 time_point 有一个 std::chrono::floor 函数和 duration ,但如何使用它们来完成我正在寻找的事情并不是很明显。

我有以下有效的玩具示例:

const auto seconds = std::chrono::seconds{period_seconds};
const auto period = std::chrono::duration_cast<std::chrono::nanoseconds>(seconds);
const auto now = std::chrono::system_clock::now();
const auto floored = now - (now.time_since_epoch() % period);

上述代码的净效果,对于 10 秒的持续时间如下:

now:     2022-04-19 15:06:26.781772408
floored: 2022-04-19 15:06:20.000000000 # so "floors" the 25.78 seconds to 20 seconds

我忍不住觉得根据 time_since_epoch 和模数运算符来工作并不是获得我正在寻找的结果的“正确”方式...

是否有“更好”/推荐的方法将 time_point 设置为某个用户提供的持续时间?

最佳答案

我觉得你的解决方案非常好。然而,它可以稍微简化。无需形成纳秒级精度 period。可以直接用seconds操作:

const auto floored = now - (now.time_since_epoch() % seconds);

关于c++ - 将 time_point 降低到给定持续时间的推荐方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71927290/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com