C++11 使用chrono,时间应该如何存储为变量?

C++11 使用chrono,时间应该如何存储为变量?,c++11,chrono,C++11,Chrono,我使用Chrono来标准化应用程序中时间戳的使用 给定一个时间戳,我将创建一个时间点。然后我将其转换为time\t以作为参数传递 std::chrono::system\u clock::to\u time\t(时间点) 我应该通过一个时间点吗?什么似乎是最佳实践 void func(time_t time) 或 我的建议是,除非为了与使用它的其他代码兼容而必须下拉到C API(例如time\t),否则只需停留在(例如std::chrono::system\u clock::time\u po

我使用Chrono来标准化应用程序中时间戳的使用

给定一个时间戳,我将创建一个时间点。然后我将其转换为time\t以作为参数传递

std::chrono::system\u clock::to\u time\t(时间点)

我应该通过一个时间点吗?什么似乎是最佳实践

void func(time_t time)


我的建议是,除非为了与使用它的其他代码兼容而必须下拉到C API(例如
time\t
),否则只需停留在
(例如
std::chrono::system\u clock::time\u point
)。它具有更好的精度,并且是一个具有语义“时间点”的独特类型,而不仅仅是一个整数类型

就是我的投票是:

void func(std::chrono::system_clock::time_point timePoint);
C++20将带来许多工具,使使用
类型更容易,这些工具在一个免费的开源库中原型化:

注意我稍微改变了你的建议
std::chrono::time_point
是类模板,而不是类型:

template<class Clock, class Duration = typename Clock::duration>
    class time_point;
模板
上课时间点;
我选择了
system\u clock
,因为这是一个类似于C类型
time\u t
的时钟。它计算自1970-01-01 00:00:00 UTC以来的时间,但精度高于
time\t
通常的精度

system\u clock::time\u point
time\u point
的类型别名(您可以使用其中一种)


有关
的视频教程,请参阅:

谢谢Howard。我必须说看到你的答案是一种荣幸:)期待c++20。保持良好的工作状态是cppcon视频引导我走上计时路线:)
template<class Clock, class Duration = typename Clock::duration>
    class time_point;