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

简介: 2023-4-11-chrono库用法学习

😉一、代码展示

#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;
}

🐱‍🐉二、运行结果


🧊文章总结

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

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


目录
相关文章
|
2月前
|
机器学习/深度学习 人工智能 搜索推荐
思维树提示技术:让AI像人类一样思考的魔法
想象一下,如果AI能像你思考问题一样有条理,从一个想法延伸到多个分支,会发生什么?思维树提示技术就是这样一种让AI更聪明的方法,通过结构化思维引导,让AI等大模型给出更深入、更全面的回答。本文将用最轻松的方式,带你掌握这个让AI智商飞升的秘技。
|
6月前
|
编解码 监控 前端开发
《别盲目做Web3D交互!Three.js和React Three Fiber难点大揭秘》
Web3D交互通过沉浸式体验和视觉呈现,广泛应用于电商、教育和建筑等领域。Three.js与React Three Fiber的结合是实现这一体验的热门技术,但其开发过程面临诸多挑战。模型渲染复杂时会导致性能下降,高分辨率纹理虽提升真实感却增加加载时间;动态场景更新可能引发性能问题,而两者的学习曲线陡峭,集成中也易出现“水土不服”。此外,移动端适配、交互逻辑设计及操作响应性等问题进一步增加了开发难度。尽管如此,随着技术进步与经验积累,这些难点将被逐步解决,推动Web3D交互迈向更精彩的未来。
213 14
|
6月前
|
机器学习/深度学习 人工智能 算法
PeptideBERT:基于Transformer用于肽性质预测的语言模型
本文介绍了PeptideBERT模型及其在昇腾设备上的部署方法。PeptideBERT是一种基于Transformer架构的蛋白质语言模型,通过微调预训练模型ProtBERT,可预测肽的溶血性、溶解性和抗非特异性吸附性等关键性质。其输入表示包括词嵌入、物理化学属性编码和位置编码,并采用多头自注意力机制捕捉序列依赖关系。
|
2月前
|
JavaScript 前端开发 Java
=和==和=== 和 equals 的区别
本内容介绍了编程中常见的运算符与方法区别,包括赋值运算符“=”,比较运算符“==”,以及JavaScript中用于全等比较的“===”。同时说明了在Java中“==”和equals方法的区别
265 5
|
11月前
|
机器学习/深度学习 算法
探索支持向量机(SVM)的奥秘:从理论到实践
探索支持向量机(SVM)的奥秘:从理论到实践
|
10月前
|
机器学习/深度学习 人工智能 运维
智能化运维在现代IT系统中的应用与挑战####
本文探讨了智能化运维(AIOps)在现代IT系统中的关键作用及其面临的主要挑战。随着云计算、大数据和人工智能技术的飞速发展,传统的IT运维模式正逐渐向更加智能、自动化的方向转变。智能化运维通过集成机器学习算法、数据分析工具和自动化流程,显著提升了系统稳定性、故障响应速度和资源利用效率。然而,这一转型过程中也伴随着数据隐私、技术复杂性和人才短缺等问题。本文旨在为读者提供一个关于智能化运维的全面视角,分析其优势与挑战,并探讨未来的发展趋势。 ####
172 6
|
存储 网络协议 Linux
Linux 多种方式实现文件共享(四)iSCSI 磁盘共享服务 7
【8月更文挑战第7天】iSCSI技术是一种新储存技术, iSCSI 提供了在 IP 网络封装 SCSI 命令,且以TCP/IP协议传输.
337 5
|
消息中间件 编解码 网络协议
京东面试 rockmq是推消息还是拉消息?他的消息模型是啥?
RocketMQ采用拉模式结合长轮询模拟推效果,减少延迟并优化资源使用。在长轮询中,服务器在无消息时保持请求开放,待有新消息时立即响应,提升实时性。利用Netty的TCP连接和异步处理,RocketMQ构建高效通信协议,适应不同吞吐量和实时性需求场景,兼顾控制与实时响应。
237 0
京东面试 rockmq是推消息还是拉消息?他的消息模型是啥?
|
存储 NoSQL 关系型数据库
PostgreSQL中的变长数据结构Varlena
在本文是PostgreSQL学习系列---基础数据类型的第二篇,对PG中的Varlena类型进行了介绍,内容还会随着学习进行不断补充~
1789 0
|
Web App开发 缓存
brew装snappy
brew装snappy,我在mac上已经开了socks5代理,也尝试了lantern或者duotai.org,结果都下载不动。 解决方法:把snappy包手动从浏览器下载,然后放到缓存目录,再执行brew安装,会用缓存文件安装。
2405 0