Chrono - 两个时间点之间的差异,以毫秒为单位?

时间:2015-07-27 15:45:06

标签: c++ c++11 time chrono

我如何获得(使用std :: chrono库)两个时间点之间的差异(以毫秒为单位)?

我可以用这个来做到这一点:

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

std::chrono::time_point<std::chrono::system_clock> foo = now + std::chrono::milliseconds(100);

std::chrono::duration<float> difference = foo - now;

const int milliseconds = difference.count() * 1000;

如何以毫秒为单位获取此时间,因此我可以将持续时间用作unsigned int,而不是float,然后乘以1000?

4 个答案:

答案 0 :(得分:21)

std::chrono::duration有两个模板参数,第二个恰好是度量单位。您可以调用std::chrono::duration_cast从一种持续时间类型转换为另一种持续时间类型。此外,还有一个预定义的持续时间类型(毫秒):std::chrono::milliseconds。一起撰写:

auto milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(foo - now);

要获得实际的毫秒数,请使用duration::count

auto ms = milliseconds.count();

其返回类型为duration::rep,对于std::chrono::milliseconds这样的标准持续时间类型,它是未指定大小的有符号整数。

答案 1 :(得分:5)

chrono::duration_cast<chrono::milliseconds>(end_time - start_time).count()

答案 2 :(得分:0)

"Auto-loading lib files in Rails 4"

std::chrono::duration_cast<std::chrono::milliseconds>();

答案 3 :(得分:0)

我用e-09之类的字母打印时长有问题。这是我的解决方法:

auto start = std::chrono::high_resolution_clock::now();
< run your function or code here >
auto finish = std::chrono::high_resolution_clock::now();
std::chrono::duration<double, std::milli> elapsed = finish - start;
std::cout << "Elapsed Time: " << elapsed.count() << " seconds" << std::endl;

现在我得到了预期的结果:

Elapsed Time: 34.406 seconds