我正在使用steady_clock
来保存一些消息的时间戳。为了调试目的,拥有日历(或类似的东西)是有用的。
对于其他的时钟,有一个静态函数to_time_t
,但在GCC(MinGW 4.8.0)中不存在这个函数。
现在我打印出如下内容:
Timestamp: 26735259098242
为了时间戳,我需要一个稳定时钟,因此不能使用 system_clock
或其他时钟。
编辑:
上一行中的输出是通过 time_since_epoch().count()
得到的。
我正在使用steady_clock
来保存一些消息的时间戳。为了调试目的,拥有日历(或类似的东西)是有用的。
对于其他的时钟,有一个静态函数to_time_t
,但在GCC(MinGW 4.8.0)中不存在这个函数。
现在我打印出如下内容:
Timestamp: 26735259098242
为了时间戳,我需要一个稳定时钟,因此不能使用 system_clock
或其他时钟。
编辑:
上一行中的输出是通过 time_since_epoch().count()
得到的。
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()
+ duration_cast<system_clock::duration>(t - steady_clock::now()));
}
如果您需要稳定的日志行为,您需要在启动时获取一个 ( system_clock::now(), steady_clock::now() )
对,并在以后永久使用它。
steady_clock
来基于持续时间设置各种过期时间。这些时间不能受到壁钟更改的影响。然而,在日志中,我希望使用壁钟来关联不同系统之间的事件时间。 - Igor Bukanov这行代码。请注意多出来的
duration_cast`。
steady_clock::now().time_since_epoch()
的值为0.12 毫秒
,那么对应的期望time_t
值是多少?定义转换方法即可得出答案。 - Cubbi(to|from)_time_t
只对系统时钟有意义。例如,high_resolution_clock
可能无法支持整个time_t
的范围。 - kennytmsteady_clock
的纪元是自启动以来的纳秒。在你的系统上可能是一样的。进行实验很容易。 - Howard Hinnant