gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:39:36 24 4
gpt4 key购买 nike

我正在使用 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> 的使用变得更加容易。类型,这些设施的原型(prototype)在一个免费的开源库中:

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

关于c++ - 使用 chrono,时间应该如何存储为变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58337680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com