std::chrono:: time_point
|
定义于头文件
<chrono>
|
||
|
template
<
class
Clock,
|
(C++11 起) | |
类模板
std::chrono::time_point
表示时间中的一个点。其实现方式如同存储一个
Duration
类型的值,该值表示自
Clock
纪元起始点开始的时间间隔。
|
|
(C++23 前) |
目录 |
成员类型
| 类型 | 描述 |
Clock
clock
|
测量此时间点所用的时钟
(类型别名) |
Duration
duration
|
用于测量自纪元起时间的
std::chrono::duration
类型
(类型别名) |
duration::rep
rep
|
表示时长计次次数的算术类型
(类型别名) |
duration::period
period
|
表示时长计次周期的
std::ratio
类型
(类型别名) |
成员函数
|
构造新的时间点
(公开成员函数) |
|
|
返回自时钟起点起的时间点作为时长
(公开成员函数) |
|
|
通过给定时长修改时间点
(公开成员函数) |
|
|
递增或递减时长
(公开成员函数) |
|
|
[static]
|
返回对应最短时长的时间点
(公开静态成员函数) |
|
[static]
|
返回对应最长时长的时间点
(公开静态成员函数) |
非成员函数
|
(C++11)
|
对时间点执行加减运算
(函数模板) |
|
(C++11)
(C++11)
(removed in C++20)
(C++11)
(C++11)
(C++11)
(C++11)
(C++20)
|
比较两个时间点
(函数模板) |
|
(C++11)
|
将时间点转换为同一时钟上具有不同时长的另一个时间点
(函数模板) |
|
(C++17)
|
将时间点转换为另一个时间点,向下取整
(函数模板) |
|
(C++17)
|
将时间点转换为另一个时间点,向上取整
(函数模板) |
|
(C++17)
|
将时间点转换为另一个时间点,四舍五入到最接近的值,平局时取偶
(函数模板) |
辅助类
|
特化
std::common_type
特征
(类模板特化) |
|
|
std::chrono::time_point
的哈希支持
(类模板特化) |
示例
#include <algorithm> #include <chrono> #include <ctime> #include <iomanip> #include <iostream> void slow_motion() { static int a[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; // 生成 Γ(13) == 12! 种排列: while (std::ranges::next_permutation(a).found) {} } int main() { using namespace std::literals; // 启用字面量后缀,例如 24h, 1ms, 1s const std::chrono::time_point<std::chrono::system_clock> now = std::chrono::system_clock::now(); const std::time_t t_c = std::chrono::system_clock::to_time_t(now - 24h); std::cout << "24小时前,时间为 " << std::put_time(std::localtime(&t_c), "%F %T.\n") << std::flush; const std::chrono::time_point<std::chrono::steady_clock> start = std::chrono::steady_clock::now(); std::cout << "不同时钟不可直接比较:\n" " 系统时间:" << now.time_since_epoch() << "\n" " 稳定时间:" << start.time_since_epoch() << '\n'; slow_motion(); const auto end = std::chrono::steady_clock::now(); std::cout << "慢速计算耗时 " << std::chrono::duration_cast<std::chrono::microseconds>(end - start) << " ≈ " << (end - start) / 1ms << "ms ≈ " // 与上述几乎等价的表示形式,但 << (end - start) / 1s << "s.\n"; // 分别使用毫秒和秒单位 }
可能的输出:
24小时前,时间为 2021-02-15 18:28:52。 不同时钟不可直接比较: 系统时间:1666497022681282572ns 稳定时间:413668317434475ns 慢速计算耗时 2090448µs ≈ 2090ms ≈ 2s。
参见
|
(C++11)
|
时间间隔
(类模板) |
|
(C++20)
|
表示特定的
year
、
month
和
day
(类) |