steady_clock :: now是否返回秒?

时间:2018-09-20 09:29:09

标签: c++11

我试图找出t的值是多少?是秒还是毫秒? steady_clock参考未提及所使用的单位。

 auto t = std::chrono::steady_clock::now() / 1000;
 auto p = t/1000;

我在想now()返回秒,t以毫秒为单位,p以微秒为单位。让我知道我做对了吗?

2 个答案:

答案 0 :(得分:1)

它是std::chrono::time_point<std::chrono::steady_clock>(文档on CppReference的质量通常更高)。

猜测下一个问题-使用time_since_epoch()(将文档转换为秒数,该文档提供了从中提取无量纲秒数的示例),也可以使用(now - epoch) / 1_second < / p>

答案 1 :(得分:0)

std::chrono::steady_clock::now()返回的值的单位不是标准定义的(它是类型为std::chrono::time_point的常规值)。

std :: chrono :: time_point的分辨率(它存储类型为Duration的值,指示从Clock纪元开始的时间间隔)取决于实现(平台/编译器),因此您不应该依赖它。

要获得所需的单位,您可以通过duration casting轻松地将time_point转换为以秒,毫秒等为单位的值:

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

({time_since_epoch()返回一个持续时间,代表* this和时钟纪元之间的时间量)。