从boost::chrono::steady_clock::now()中获得双倍值

Get a double from boost::chrono::steady_clock::now()

本文关键字:now chrono boost steady clock      更新时间:2023-10-16

如何从boost::chrono::steady_clock::now()中获得双值?我不相信有一个。count()参数。

为什么我需要这个?我有一个无法解析boost返回的方法。

  • boost::chrono::steady_clock::now()返回boost::chrono::time_point
  • boost::chrono::time_point有一个返回boost::chrono::durationtime_since_epoch方法。
  • 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.);

可以在duration中指定double:

auto some_time = std::chrono::high_resolution_clock::now();
double duration = std::chrono::duration_cast<std::chrono::duration<double>>(some_time).count();