c++ - 将 uint64_t 转换为 time_point

标签 c++ c++11 time c++-chrono

我有一个 uint64_t 值,它表示自纪元以来的纳秒数。现在我需要将其转换为 time_point

目前我有这段代码:

std::chrono::time_point<std::chrono::nanoseconds> uptime(std::chrono::nanoseconds(deviceUptime));

稍后我想打印类似 Fri Feb 10 15:13:04 2017 的内容。为此,我想使用这段代码:

std::time_t t = std::chrono::system_clock::to_time_t(uptime);
std::cout << "Device time: " << std::ctime(&t) << std::endl;

但是我得到一个错误:

No viable conversion from 'time_point<std::chrono::nanoseconds>' to 'const time_point<std::__1::chrono::system_clock>'

我需要做什么才能将 time_point 转换为 ctime 可以使用的格式?还是有更好的方法来解决这个问题?

最佳答案

试试这个:

uint64_t uptime = 0;
using time_point = std::chrono::system_clock::time_point;
time_point uptime_timepoint{std::chrono::duration_cast<time_point::duration>(std::chrono::nanoseconds(uptime))};
std::time_t t = std::chrono::system_clock::to_time_t(uptime_timepoint);

或者:

std::time_t t = uptime / 1000000000;

关于c++ - 将 uint64_t 转换为 time_point,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42161745/

相关文章:

c++ - 在中断中使用 delayMicroseconds

java - 检测 TCP 数据包丢失

c++ - 在 C++ 中,当元素索引在运行时已知时,是否可以获取元组中一个元素的类型?

c++ - Linux/c++ 定时方法保证每 N 秒执行一次,尽管有漂移?

postgresql - 将laSTLogin保存在表中

c++ - --enable-auto-import 警告的目的

c++ - gcc "overflow in expression"而等效等效表达式工作正常

c++ - 我的机器上的 std::promise 是否损坏(使用 g++-mp)?

c++ - 为什么下面的多线程代码会导致 SIGABRT ?

javascript - 用 Javascript 计时