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

Dej*_*jwi 57 c++ time c++11 c++-chrono

由于C++ 11的文档不足,我遇到了一个小问题.

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

我试过了:

std::chrono::time_point<std::chrono::system_clock> now = 
    std::chrono::system_clock::now();
Run Code Online (Sandbox Code Playgroud)

但是我不知道以这种方式获得的分辨率是什么time_point,我不知道如何将这个时间作为一个简单的无符号long long,我没有任何概念如何将它转换为另一个分辨率.

R. *_*des 100

您可以now.time_since_epoch()使用时钟的分辨率来获取表示自纪元以来时间的持续时间.要转换为毫秒,请使用duration_cast:

auto duration = now.time_since_epoch();
auto millis = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();
Run Code Online (Sandbox Code Playgroud)

  • +1.更多信息(这几乎是一个教程):http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2661.htm (16认同)
  • @R。Martinho Fernandes 当人们告诉你他们不明白 C++ 标准委员会如何能够如此一致地产生极其困难的应用程序接口(需要你阅读互联网上某个人编写的 40 页文档才能完成)时,你有什么地方可以指出吗?用一种合理的语言一行可以完成什么? (5认同)
  • 如果您不包含快捷方式标头: auto period = std::chrono::system_clock::now().time_since_epoch(); (3认同)