std::chrono::time_point
来自 cppreference.com
定义在头文件 <chrono> 中 |
||
template< class Clock, |
(自 C++11 起) | |
类模板 std::chrono::time_point
表示时间点。它被实现为存储类型为 Duration
的值,指示自 Clock
的纪元开始以来的时间间隔。
|
(直到 C++23) |
内容 |
[编辑] 成员类型
成员类型 | 定义 |
clock
|
Clock ,测量此时间点的时钟 |
duration
|
Duration ,std::chrono::duration 类型,用于测量自纪元开始以来的时间 |
rep
|
Rep ,表示持续时间刻度数的算术类型 |
period
|
Period ,std::ratio 类型,表示持续时间的刻度周期 |
[编辑] 成员函数
构造新的时间点 (公共成员函数) | |
将时间点作为自其时钟开始以来的持续时间返回 (公共成员函数) | |
通过给定持续时间修改时间点 (公共成员函数) | |
增加或减少持续时间 (公共成员函数) | |
[静态] |
返回对应于最小持续时间的时间点 (公共静态成员函数) |
[静态] |
返回对应于最大持续时间的时间点 (公共静态成员函数) |
[编辑] 非成员函数
(C++11) |
执行涉及时间点的加减操作 (函数模板) |
(C++11)(C++11)(C++20 中已移除)(C++11)(C++11)(C++11)(C++11)(C++20) |
比较两个时间点 (函数模板) |
(C++11) |
将时间点转换为同一时钟上的另一个时间点,但具有不同的持续时间 (函数模板) |
将时间点转换为另一个时间点,向下取整 (函数模板) | |
将时间点转换为另一个时间点,向上取整 (函数模板) | |
将时间点转换为另一个时间点,四舍五入,偶数取整 (函数模板) |
[编辑] 辅助类
专门化 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}; // Generate Γ(13) == 12! permutations: while (std::ranges::next_permutation(a).found) {} } int main() { using namespace std::literals; // enables literal suffixes, e.g. 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 hours ago, the time was " << 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 << "Different clocks are not comparable: \n" " System time: " << now.time_since_epoch() << "\n" " Steady time: " << start.time_since_epoch() << '\n'; slow_motion(); const auto end = std::chrono::steady_clock::now(); std::cout << "Slow calculations took " << std::chrono::duration_cast<std::chrono::microseconds>(end - start) << " ≈ " << (end - start) / 1ms << "ms ≈ " // almost equivalent form of the above, but << (end - start) / 1s << "s.\n"; // using milliseconds and seconds accordingly }
可能的输出
24 hours ago, the time was 2021-02-15 18:28:52. Different clocks are not comparable: System time: 1666497022681282572ns Steady time: 413668317434475ns Slow calculations took 2090448µs ≈ 2090ms ≈ 2s.
[编辑] 另请参见
(C++11) |
时间间隔 (类模板) |
(C++20) |
表示特定的 year、month 和 day (类) |