命名空间
变体
操作

std::chrono::time_point

来自 cppreference.com
< cpp‎ | chrono
 
 
工具库
语言支持
类型支持 (基本类型,RTTI)
库功能测试宏 (C++20)
动态内存管理
程序工具
协程支持 (C++20)
可变参数函数
调试支持
(C++26)
三向比较
(C++20)
(C++20)(C++20)(C++20)
(C++20)(C++20)(C++20)
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中已弃用)
整数比较函数
(C++20)(C++20)(C++20)   
(C++20)
交换类型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
通用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
基本字符串转换
(C++17)
(C++17)

 
 
 
定义在头文件 <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)

内容

[编辑] 成员类型

成员类型 定义
clock Clock,测量此时间点的时钟
duration Durationstd::chrono::duration 类型,用于测量自纪元开始以来的时间
rep Rep,表示持续时间刻度数的算术类型
period Periodstd::ratio 类型,表示持续时间的刻度周期

[编辑] 成员函数

构造新的时间点
(公共成员函数) [编辑]
将时间点作为自其时钟开始以来的持续时间返回
(公共成员函数) [编辑]
通过给定持续时间修改时间点
(公共成员函数) [编辑]
增加或减少持续时间
(公共成员函数) [编辑]
[静态]
返回对应于最小持续时间的时间点
(公共静态成员函数) [编辑]
[静态]
返回对应于最大持续时间的时间点
(公共静态成员函数) [编辑]

[编辑] 非成员函数

执行涉及时间点的加减操作
(函数模板) [编辑]
(C++11)(C++11)(C++20 中已移除)(C++11)(C++11)(C++11)(C++11)(C++20)
比较两个时间点
(函数模板) [编辑]
将时间点转换为同一时钟上的另一个时间点,但具有不同的持续时间
(函数模板) [编辑]
将时间点转换为另一个时间点,向下取整
(函数模板) [编辑]
将时间点转换为另一个时间点,向上取整
(函数模板) [编辑]
将时间点转换为另一个时间点,四舍五入,偶数取整
(函数模板) [编辑]

[编辑] 辅助类

专门化 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)
时间间隔
(类模板) [编辑]
表示特定的 yearmonthday
(类) [编辑]