时间接口处理全解析
1. C++ 中的时钟类
在 C++ 的 chrono
命名空间里,存在三种时钟类,它们在处理时间时各有特点:
- system_clock :代表所谓的挂钟时间,可随时调整,例如因闰秒引入额外不精确性或用户手动设置时。多数实现中,其纪元(起始点)采用 UNIX 时间,即从 1970 年 1 月 1 日开始计数。
- steady_clock :代表单调时钟,不会被调整,始终保持稳定。多数实现里,其起始点是机器启动的时间,适合用于计算特定事件的经过时间。
- high_resolution_clock :具有最短计时周期的时钟,可能是 system_clock
或 steady_clock
的别名,也可能是完全不同的实现,具体由实现定义。
以下是这三种时钟类的对比表格:
| 时钟类 | 特点 | 起始点 | 适用场景 |
| ---- | ---- | ---- | ---- |
| system_clock | 可调整 | 1970 年 1 月 1 日 | 获取当前实际时间 |
| steady_clock | 不可调整,稳定 | 机器启动时间 | 计算事件经过时间 |
| high_resolution_clock | 最短计时周期 | 实现定义 | 对时间精度要求极高的场景 |
2. 使用 C++20 日历和时区功能
C++20 标准为