【发布时间】:2020-07-17 12:42:16
【问题描述】:
我有自 Epoch 以来的纳秒数,我想打印出来以便阅读。
我发现在线打印time_point 的示例使用system_clock,然后转换为std::time_t。但是,我正在使用high_resolution_clock(因为纳秒),因此很难理解如何打印它。
考虑到我处理的是纳秒,最好的技术是什么?如果可能的话,我宁愿坚持使用标准库。
我现在坚持使用 C++17,但请提及 C++20 是否让这变得更容易。
#include <chrono>
#include <iostream>
using Clock = std::chrono::high_resolution_clock;
using TimePoint = std::chrono::time_point<Clock>;
int main()
{
const uint64_t nanosSinceEpoch = 1517812763001883383;
const Clock::duration duration_ns_since_epoch = std::chrono::nanoseconds(nanosSinceEpoch);
const TimePoint tp(duration_ns_since_epoch);
// Would like to print tp in readable format
}
【问题讨论】:
-
@NathanOliver 该示例使用 system_clock,这会导致从 chrono::nanoseconds 创建编译错误
-
@user997112 但接受的答案以转换为
std::time_t结尾,这对打印更加友好,并提到了打印这种结构的常用方法。 -
@Yksisarvinen 我完全同意,我想使用这种方法,但我不确定如何从 high_resolution_clock 创建 time_t?
-
啊,对,函数
to_time_t只存在于system_clock,我的错。虽然似乎不鼓励直接使用high_resolution_clock(或者至少 cppreference 不鼓励这样做)。