使用时间,时间应该如何存储为变量?

Using chrono, how should time be stored as a variable?

本文关键字:时间 存储 变量 何存储      更新时间:2023-10-16

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

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

std::chrono::system_clock::to_time_t (timePoint)

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

void func(time_t time)

void func(std::chrono::time_point timePoint)

我的建议是,除非你必须下拉到 C API(例如time_t( 为了与使用它的其他代码兼容,只需保持<chrono>(例如std::chrono::system_clock::time_point(。 它具有更好的精度,并且是具有语义"时间点"的唯一类型,而不仅仅是整数类型。

也就是说,我的投票是:

void func(std::chrono::system_clock::time_point timePoint);

C++20 将带来许多工具,以便更轻松地使用<chrono>类型,这些工具在免费的开源库中进行了原型设计:

https://github.com/HowardHinnant/date

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

template<class Clock, class Duration = typename Clock::duration>
class time_point;

我选择了system_clock因为那是类似于C型time_t的时钟。 它计算自 1970-01-01 00:00:00 UTC 以来的时间,除非精度高于time_t通常。

system_clock::time_pointtime_point<system_clock>的类型别名(您可以使用其中之一(。

有关<chrono>的视频教程,请参阅:https://www.youtube.com/watch?v=P32hvk8b13M