template<class Clock,class Duration = typename Clock::duration>
class time_point;
类模板 std::chrono::time_point 表示时间中的一个点。它被实现成如同存储一个 Duration 类型的自 Clock 的纪元起始开始的时间间隔的值。(通俗来讲,time_point存储一个时间点,这个时间点是指从CLock纪元开始,往后Duration类型的值所代表的那个时间点)
Clock 必须满足时钟 (Clock) 的要求或为 std::chrono::local_t (C++20 起)
成员类型 | 定义 |
clock |
Clock ,此时间点在此时钟上计量 |
duration |
Duration ,用于计量从纪元起时间的 std::chrono::duration 类型 |
rep |
Rep ,表示时期的计次数的算术类型 |
period |
Period ,表示时期周期的std::ratio 类型 |
成员函数
time_since_epoch |
返回表示为从其时钟起点开始的时间点 |
非成员函数
time_point_cast |
转换时间点为同一时钟上拥有不同时长的另一时间点 |
time_t:出于历史原因,通常将其实现为一个整数值,该整数值表示自UTC(1970年1月1日)00:00小时以来经过的秒数(即unix时间戳)
std::localtime:将time_t转换为本地日历时
std::gmtime:将time_t转换为世界时
std::chrono::steady_clock:类 std::chrono::steady_clock
表示单调时钟。此时钟的时间点无法减少,因为物理时间向前移动。此时钟与壁钟时间无关(例如,它能是上次重启开始的时间),且最适于度量间隔。
#include <iostream>
#include <iomanip>
#include <ctime>
#include <chrono>int main()
{std::chrono::system_clock::time_point now = std::chrono::system_clock::now();std::time_t now_c = std::chrono::system_clock::to_time_t(now - std::chrono::hours(24));std::cout << "24 hours ago, the time was "<< std::put_time(std::localtime(&now_c), "%F %T") << '\n';std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now();std::cout << "Hello World\n";std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();std::cout << "Printing took "<< std::chrono::duration_cast<std::chrono::microseconds>(end - start).count()<< "us.\n";
}
运行结果: