我正在使用 steady_clock
来保存一些消息的时间戳。出于调试目的,拥有日历(或类似的东西)很有用。
对于其他时钟,有静态函数 to_time_t
,但在 GCC (MinGW 4.8.0) 上,此函数不存在。
现在我打印类似的东西:
Timestamp: 26735259098242
对于时间戳,我需要一个 steady_clock,所以我不能使用 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() )
并在之后永远使用它。
关于c++ - 将 steady_clock::time_point 转换为 time_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18361638/