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

Chrono - The difference between two points in time in milliseconds?

本文关键字:为单位 -两 时间 之间 时间差      更新时间:2023-10-16

如何获得(使用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;

我怎么能得到这个时间毫秒,所以我可以使用持续时间作为一个无符号int,而不是一个浮点数,然后乘以1000?

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这样的标准持续时间类型,它是一个大小未指定的有符号整数。

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

我在打印像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

http://www.cplusplus.com/reference/chrono/duration_cast/

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