c ++中是否有任何日期时间模块

Is there any date-time module in c++

C++有日期时间模块吗?
我在 google 中进行了一些研究,开始了解 <ctime> 头文件,但它超出了我的理解范围。

还有什么可以完成我的工作吗?

在 C++ 标准中:<chrono>

C++11

从 C++11 开始,标准库包含 date & time utilities, available in the <chrono> header,在 std::chrono 命名空间中构造。

其中你会发现:

  • 时钟
  • 时间点
  • 时长
  • 灵活的 mechanism 用于从字符串解析日期和时间值

该库是高度模板化的,因此您可以使用您选择的类型作为原始表示(甚至 floating-point 类型),并设置您自己的分辨率。

使用示例:How to get current time and date in C++?

请注意,std::chrono 设施是 somewhat-compatible 旧的 <ctime> header 类型。例如,“系统时钟”class has methods 用于与 <ctime> 时间表示形式 time_t 相互转换。如果您正在组合 C 和 C++ 代码,或者需要在某处公开 C 接口,这将对您很有用;否则 - 尝试 避免 <ctime> 基于代码。

C++20

2020年批准的新标准版本增加:

  • 时区
  • 日历
  • 更多持续时间类型
  • 更多时间点类型
  • 更多时钟

超越标准:Howard Hinnant 的日期库

正如评论者@AndyG 和@doug 所建议的那样,Howard Hinnant“C++ 日期和时间专家”,他的大部分工作实际上已经进入标准 - 但是不是全部。

Howard 维护着自己的 library/set-of-libraries,名为“Date”。

它基于C++11 <chrono>,但它的变化并不完全是C++20中添加的;如果您使用的是 C++17 或更早版本,则特别有用。它添加:

  • 时区
  • 日历,包括儒略历和伊斯兰教
  • 更多持续时间类型
  • 更多时间点类型

我假设最终,这里所有的好东西都会被标准化,但这还没有发生。