std::chrono::time_point

来自cppreference.com
< cpp‎ | chrono
 
 
 
 
在标头 <chrono> 定义
template<

    class Clock,
    class Duration =typename Clock::duration

>class time_point;
(C++11 起)

类模板 std::chrono::time_point 表示时间中的一个点。它被实现成如同存储一个 Duration 类型的值,指定自 Clock 的纪元起始开始的时间间隔。

Clock 必须满足时钟(Clock) 的要求或者是 std::chrono::local_t(C++20 起)

(C++23 前)

目录

[编辑]成员类型

类型 描述
Clockclock
此时间点计量所用的时钟
(typedef)
Durationduration
用于计量从纪元起时间的 std::chrono::duration 类型
(typedef)
duration::reprep
表示时长的滴答次数的算术类型
(typedef)
duration::periodperiod
表示时长的滴答周期的 std::ratio 类型
(typedef)

[编辑]成员函数

构造新的 time_point
(公开成员函数)[编辑]
返回以其时钟起点开始的时长表示的时间点
(公开成员函数)[编辑]
以给定的 duration 修改 time_point
(公开成员函数)[编辑]
自增或自减 duration
(公开成员函数)[编辑]
[静态]
返回对应最小时长的时间点
(公开静态成员函数)[编辑]
[静态]
返回对应最大时长的时间点
(公开静态成员函数)[编辑]

[编辑]非成员函数

实现涉及时间点的加法和减法运算
(函数模板)[编辑]
(C++11)(C++11)(C++20 移除)(C++11)(C++11)(C++11)(C++11)(C++20)
比较两个时间点
(函数模板)[编辑]
转换时间点为同一时钟上拥有不同时长的另一时间点
(函数模板)[编辑]
转换 time_point 到另一个,向下取整
(函数模板)[编辑]
转换 time_point 到另一个,向上取整
(函数模板)[编辑]
转换 time_point 到另一个,就近取整,偶数优先
(函数模板)[编辑]

[编辑]辅助类

特化 std::common_type 特征
(类模板特化)[编辑]
std::chrono::time_point 的散列支持
(类模板特化)

[编辑]示例

#include <algorithm>#include <chrono>#include <ctime>#include <iomanip>#include <iostream>   void slow_motion(){staticint a[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};// 生成 Γ(13) == 12! 的排列:while(std::ranges::next_permutation(a).found){}}   int main(){usingnamespace std::literals;// 允许用字面量后缀,如 24h、1ms、1s。   const std::chrono::time_point<std::chrono::system_clock> now =std::chrono::system_clock::now();   conststd::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();   constauto 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)
时间区间
(类模板)[编辑]
表示特定的 yearmonthday
(类)[编辑]
close