将steady_clock :: time_point转换为time_t

时间:2013-08-21 15:31:02

标签: c++ c++11 chrono

我正在使用steady_clock来保存某些消息的时间戳。对于调试目的,可以使用日历(或类似的东西)。

对于其他时钟,这是静态函数to_time_t,但在GCC(MinGW 4.8.0)上,此函数不存在。

现在我打印的内容如下:

Timestamp: 26735259098242

对于时间戳,我需要一个steady_clock,所以我不能使用system_clock或其他人。

修改 之前的印刷品来自time_since_epoch().count()

1 个答案:

答案 0 :(得分:15)

假设您需要稳定行为进行内部计算,而不是显示,这里可以使用一个函数转换为time_t进行显示。

using std::chrono::steady_clock;
using std::chrono::system_clock;

time_t steady_clock_to_time_t( steady_clock::time_point t )
{
    return system_clock::to_time_t(system_clock::now()
                                          + (t - steady_clock::now()));
}

如果您需要稳定的日志记录行为,您希望在启动时获得一对( system_clock::now(), steady_clock::now() )并在之后永久使用它。