C++中是否有任何日期时间模块
C++ 中是否有任何日期时间模块?
我在谷歌上研究了一下,开始了解<ctime>头文件,但它只是超出了我的头脑。
还有什么可以做我的工作吗?
回答
在 C++ 标准中: <chrono>
C++11
从 C++11 开始,标准库包含日期和时间实用程序,在<chrono>header 中可用,在std::chrono命名空间中构造。
其中,您会发现:
- 时钟
- 时间点
- 持续时间
- 从字符串解析日期和时间值的灵活机制
该库是大量模板化的,因此您可以使用您选择的类型作为原始表示(甚至浮点类型),并设置您自己的分辨率。
使用示例:如何在 C++ 中获取当前时间和日期?
请注意,std::chrono工具与旧的<ctime>标头类型有些兼容。例如,“系统时钟”类具有 的方法用于转换和从<ctime>时间表示,time_t。如果您组合 C 和 C++ 代码,或者需要在某处公开 C 接口,这对您很有用;否则 - 尝试避免 <ctime>基于代码。
C++20
2020年批准的新标准版增加了:
- 时区
- 日历
- 更多持续时间类型
- 更多时间点类型
- 更多时钟
超越标准:Howard Hinnant 的日期库
作为评论者@AndyG和@doug建议,霍华德Hinnant(欣南特)是在“C ++日期和时间的人”,而他的工作实际上已经进入标准-但不是全部。
Howard 维护着他自己的图书馆/图书馆集,名为“Date”。
- GitHub 上的“日期”库
- “日期”库文档
它基于 C++11 <chrono>,但它的变化并不完全是在 C++20 中添加的;如果您使用的是 C++17 或更早版本,那么特别有用。它补充说:
- 时区
- 日历,包括朱利安和伊斯兰
- 更多持续时间类型
- 更多时间点类型
- 周
我假设最终,这里的所有好东西都会标准化,但这还没有发生。