【发布时间】:2015-11-18 06:28:03
【问题描述】:
我有一个下面的代码,我们试图从中获取自纪元时间以来的当前时间戳(以微秒为单位),但我们使用的是steady_clock。
inline uint64_t get_timestamp()
{
std::chrono::time_point<std::chrono::steady_clock> ts = std::chrono::steady_clock::now();
return std::chrono::duration_cast<std::chrono::microseconds>(ts.time_since_epoch()).count();
}
这是正确的方法吗,因为根据我的理解steady_clock 用于衡量时间的流逝而不是获取当前时间?或者我应该使用system_clock 如下所示:
inline uint64_t get_timestamp()
{
std::chrono::time_point<std::chrono::system_clock> ts = std::chrono::system_clock::now();
return std::chrono::duration_cast<std::chrono::microseconds>(ts.time_since_epoch()).count();
}
我只需要使用std::chrono 包,因为这是我们所有的代码都在使用的。
【问题讨论】:
-
@πάνταῥεῖ
std::uint64_t?无论如何,至少会再长一点。在撰写本文时,自纪元以来的当前时间为 1440440480 秒,即 0x51dac207a0000 微秒。 -
@πάνταῥεῖ
uint64_t... -
抱歉,暂时对纳秒精度感到困惑。