【发布时间】:2021-10-21 19:56:42
【问题描述】:
我有一堆以微秒为单位的任务,下面的代码只打印到几秒钟(2021 年 10 月 21 日星期四 12:48:20 2021),所以比较 start 和 finish 的值总是最终给出 0。我希望能够以毫秒和微秒的顺序进行比较。有什么功能可以帮助解决这个问题吗?
另外,有没有办法将uint64_t current1 = std::chrono::system_clock::now().time_since_epoch().count(); 转换为time_t 以根据count() 打印出当前时间?
const auto p1 = std::chrono::system_clock::now();
std::time_t now = std::chrono::system_clock::to_time_t(p1);
std::cout << "now: " << std::ctime(&now);
【问题讨论】:
-
至少在大多数实现中,
time_t的分辨率为一秒。 -
查看en.cppreference.com/w/cpp/chrono,有很多标准工具可以处理亚秒级时间间隔(但
time_t不是其中之一,请考虑使用其他工具)。 -
如果你比较“开始”和“结束”时间,你应该使用
std::chrono::steady_clock。system_clock不能用于计时,因为就像挂钟一样,它们可以突然向前和向后跳跃。 -
好的,有没有办法以日期时间的可读格式转换为打印 std::chrono::system_clock::now().time_since_epoch().count() ?
-
@learnzz 有没有回答您的问题?如果有,请考虑accepting吧。