如何从 boost::chrono::steady_clock::now() 获得 double 值? 我不相信为此有一个 .count() 参数。
为什么我需要这个?我有一个无法解析 boost 返回值的方法。
最佳答案
-
boost::chrono::steady_clock::now()
返回一个boost::chrono::time_point
。 -
boost::chrono::time_point
有一个time_since_epoch
方法返回一个boost::chrono::duration
。 -
boost::chrono::duration
有一个count
方法可以给你一个标量。
当我们把它们放在一起时,可以归结为:
auto now = boost::chrono::steady_clock::now().time_since_epoch();
auto timeSinceEpoch = boost::chrono::duration_cast<boost::chrono::milliseconds>(now).count();
虽然这不是 double
但足够接近:您可以更改 duration_cast
以获得您需要的任何精度和/或划分 timeSinceEpoch
根据您的喜好,以便您的 double
符合您的要求。例如:
// Days since epoch, with millisecond (see duration_cast above) precision
double daysSinceEpoch = double(timeSinceEpoch) / (24. * 3600. * 1000.);
关于c++ - 从 boost::chrono::steady_clock::now() 获得双倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16700277/