C++ chrono 系统时间(以毫秒为单位),时间操作

Posted

技术标签:

【中文标题】C++ chrono 系统时间(以毫秒为单位),时间操作【英文标题】:C++ chrono system time in milliseconds, time operations 【发布时间】:2012-02-23 18:43:22 【问题描述】:

我遇到了一个小问题,因为 C++11 的文档不足。

我想以毫秒、纳秒或秒为单位获取自纪元以来的时间,然后我必须将此值“转换”为另一个分辨率。 我可以使用 gettimeofday() 来做到这一点,但这很容易,所以我尝试使用 std::chrono 来实现它。

我试过了:

std::chrono::time_point<std::chrono::system_clock> now = 
    std::chrono::system_clock::now();

但我不知道以这种方式获得的 time_point 的分辨率是什么,我不知道如何将这个时间作为简单的 unsigned long long 获得,我也不知道如何将它转换为另一个分辨率。

【问题讨论】:

std::chrono and cout 的可能重复项 【参考方案1】:

您可以使用the clock's resolution 获取表示自纪元以来时间的持续时间,使用the clock's resolution。要转换为毫秒,请使用 duration_cast:

auto duration = now.time_since_epoch();
auto millis = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();

【讨论】:

+1。更多信息在这里(几乎是一个教程):open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2661.htm @Howard 谢谢!现在,当人们告诉我他们不理解&lt;chrono&gt; 时,我有一些地方可以指出。 如果不包括快捷方式标题:auto duration = std::chrono::system_clock::now().time_since_epoch();

以上是关于C++ chrono 系统时间(以毫秒为单位),时间操作的主要内容,如果未能解决你的问题,请参考以下文章

如何以毫秒为单位获取当前时间?

如何在 c++ 中以毫秒为单位获得系统启动时间?

c++代码执行定时器返回0,需要以毫秒为单位输出

C++ 中的时序逻辑错误(使用 std::chrono)

std::chrono::duration_cast - 比纳秒更精确的单位?

c ++ chrono给出负纪元时间