【问题标题】:How to get std::chrono::system_clock::time_point from std::chrono::system_clock::time_point.time_since_epoch().count()?如何从 std::chrono::system_clock::time_point.time_since_epoch().count() 获取 std::chrono::system_clock::time_point?
【发布时间】:2019-01-13 17:43:13
【问题描述】:

我有一个变量存储为long 一个来自std::chrono::system_clock::time_point.time_since_epoch().count() 的值。 我现在想从long 变量中恢复std::chrono::system_clock::time_point。 那么如何将long 转换为std::chrono::system_clock::time_point

【问题讨论】:

  • 您需要将计数转换为持续时间,然后将持续时间转换为时间点。
  • 谢谢,工作(((更多文字安抚stackoverflow神)))))

标签: c++ time chrono


【解决方案1】:

您首先需要将整数类型转换为chrono::duration,然后将duration 转换为system_clock::time_point。但有一个问题:

duration 是一个模板:

template <class Rep, class Period> class duration;

如果将整数类型转换为错误 duration,你会得到错误的time_point

幸运的是 system_clock 本身会告诉您正确的 duration 及其嵌套的 duration 类型:system_clock::duration。此外,这些转化中的每一个都是explicit

所以,总结一下:

using namespace std::chrono;
system_clock::time_point tp{system_clock::duration{i}};

【讨论】:

  • 为什么要用大括号?
  • 这只是客户的风格选择。我更喜欢{} 来表示构造。 () 也可以正常工作。
  • 哈哈,我不知道那是 C++ 中的东西。
猜你喜欢
  • 2013-12-05
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
  • 2014-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多