2023-4-11-chrono库用法学习



🍿*★,°*:.☆( ̄▽ ̄)/$:*.°★* 🍿

💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥
💟💟喜欢的朋友可以关注一下,下次更新不迷路💟💟
😆😆😆私聊获取个人订阅号哦,欢迎订阅共同学习😆😆😆
💖💖💖💖可以加入大家庭群聊,一起学习天天有福利💖💖💖💖





🍬本文摘要

在这里插入图片描述

听说这个库计算出来的时间精度很高,我来试一试。




😉一、代码展示

#include <functional>
#include <iostream>
#include "chrono"


int main() {
    //num为分子 den为分母
    std::cout << std::chrono::milliseconds::period::num << std::endl;//输出1
    std::cout << std::chrono::milliseconds::period::den << std::endl;//输出1000  解释一下怎么来的  一秒除以一千就是一毫秒 所以分子是1 分母是1000
    //物理时间计时,steady_clock:是固定的时钟,相当于秒表。开始计时后,时间只会增长并且不能修改,适合用于记录程序耗时,high_resolution_clock:和时钟类 steady_clock 是等价的(是它的别名)。
    auto start = std::chrono::system_clock::now();
    for (int i = 0; i < 10000000; i++) {

    }
    auto end = std::chrono::system_clock::now();
    auto duration = std::chrono::duration_cast<std::chrono::microseconds>(end - start);
    std::cout << double(duration.count()) << std::endl;


    //定义毫秒级别的时钟类型
    typedef std::chrono::time_point<std::chrono::system_clock, std::chrono::milliseconds> microClock_type;
    //获取当前时间点,windows system_clock是100纳秒级别的(不同系统不一样,自己按照介绍的方法测试),所以要转换
    microClock_type tp = std::chrono::time_point_cast<std::chrono::milliseconds>(std::chrono::system_clock::now());
    //获取ctime格式的时间
    time_t tt = std::chrono::system_clock::to_time_t(tp);
    char _time[50];
    ctime_s(_time, sizeof(_time), &tt);
    std::cout << "now time is : " << _time;
    //计算距离1970-1-1,00:00的时间长度,因为当前时间点定义的精度为毫秒,所以输出的是毫秒
    std::cout << tp.time_since_epoch().count() << std::endl;
    //定义时间间隔
    std::chrono::duration<double, std::ratio<9, 7>> d1(3);
    std::chrono::duration<double, std::ratio<6, 5>> d2(1);
    // d1 和 d2 统一之后的时钟周期 对于分子 6,、9 最大公约数为 3,对于分母 7、5 最小公倍数为 35,因此推导出的时钟周期为 ratio<3,35>
    std::chrono::duration<double, std::ratio<3, 35>> d3 = d1 - d2;
    std::cout << d3.count() << " tick" << std::endl;
    // 新纪元1970.1.1时间
    std::chrono::system_clock::time_point epoch;

    std::chrono::duration<int, std::ratio<60*60*24>> day(1);
    // 新纪元1970.1.1时间 + 1天
    std::chrono::system_clock::time_point ppt(day);

    using dday = std::chrono::duration<int, std::ratio<60 * 60 * 24>>;
    // 新纪元1970.1.1时间 + 10天
    std::chrono::time_point<std::chrono::system_clock, dday> t(dday(10));

    // 系统当前时间
    std::chrono::system_clock::time_point today = std::chrono::system_clock::now();

    // 转换为time_t时间类型
    time_t tm = std::chrono::system_clock::to_time_t(today);
    std::cout << "今天的日期是:    " << ctime(&tm);

    time_t tm1 = std::chrono::system_clock::to_time_t(today+day);
    std::cout << "明天的日期是:    " << ctime(&tm1);

    time_t tm2 = std::chrono::system_clock::to_time_t(epoch);
    std::cout << "新纪元时间:      " << ctime(&tm2);

    time_t tm3 = std::chrono::system_clock::to_time_t(ppt);
    std::cout << "新纪元时间+1天:  " << ctime(&tm3);

    time_t tm4 = std::chrono::system_clock::to_time_t(t);
    std::cout << "新纪元时间+10天: " << ctime(&tm4);

    return 0;
}

🐱‍🐉二、运行结果

在这里插入图片描述


🧊文章总结

提示:这里对文章进行总结:

  简单的使用了解一下这个库怎么用。






更多好文推荐

🍸2021-4月Python 机器学习——中文新闻文本标题分类
🍹2021年4月-(计算机网络)小型校园网络模拟搭建,最全最准确版
🍺2022-10-31-基于用户的协同过滤推荐算法实现+MAE+RMSE
🍻2022-11-28-大数据可视化,特征维度大于50
🥂2023-3-9-一篇简短的文章把C++左右值关系讲的透透彻彻

上一篇
End
下一篇
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汤姆z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值