使用时间,时间应该如何存储为变量?
Using chrono, how should time be stored as a variable?
我正在使用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_point
是time_point<system_clock>
的类型别名(您可以使用其中之一(。
有关<chrono>
的视频教程,请参阅:https://www.youtube.com/watch?v=P32hvk8b13M
相关文章:
- 指向(数据)成员的指针作为非类型模板参数,例如具有自动存储持续时间/无链接
- 为什么具有静态存储持续时间的同一内联变量在包含在 VS2017 编译的两个翻译单元中时会构造和销毁两次
- 图问题:找出两个节点是否在每个节点的O(1)时间和O(2)存储中共享同一分支
- C++-需要读取存储在文件(.txt)中的时间戳并正确检索
- 具有静态存储持续时间的常量初始化变量的初始化顺序
- 如何将 time-uuid(存储在 boost uuid 中)转换为时间戳/自纪元以来的时间?
- 使用时间,时间应该如何存储为变量?
- 静态存储持续时间初始化
- 添加两个时间值存储为数据库中的字符串
- 在不同翻译单元中具有静态存储持续时间的依赖非局部常量浮点变量的常量初始化
- 访问和存储/解析性std :: Chrono ::持续时间:: milliseconds(cpprest)时使用什么类型
- 将时间戳存储在纳秒C 中
- 如何在双精度内存储时间
- C++ - 函数中的局部指针变量具有什么类型的存储持续时间以及它们存储在哪里?
- 变量在临时存储中存在多长时间
- 什么是静态存储持续时间的临时对象
- 如何使课程持续时间存储时间长度
- 将当前时间 simTime.dbl() 与以前存储的双精度值进行比较并不总是给出正确的答案......为什么?
- C++ 时间存储time_point表达式必须是可修改的左值
- 尝试使用chrono将时间存储到数组中