c++11:std::chrono::time_point、time_t、std::localtime、std::gmtime、std::chrono::steady_clock

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 起)

成员类型定义
clockClock ,此时间点在此时钟上计量
durationDuration ,用于计量从纪元起时间的 std::chrono::duration 类型
repRep ,表示时期的计次数的算术类型
periodPeriod ,表示时期周期的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";
}

运行结果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值