当前位置: 首页 > news >正文

std::chrono时间处理

std::chrono是C++11引入的标准库,用于时间的计算和处理。它按照ISO8601标准定义了多个时间类,例如:duration(持续时间)、time_point(时间点)和clock(时钟)。以下是一些常见的用法:

1. 计算程序运行时间


#include <iostream>
#include <string>
#include <chrono>
#include <unistd.h>
#include <sstream>
#include <iomanip>
#include <thread>int main(int argc, char *argv[])
{  //1. 计算耗时auto start = std::chrono::system_clock::now();//std::chrono::time_point start = std::chrono::system_clock::now();int32_t j = 0;for(int i=0;i<10000;i++){j++;}        //sleep(1);std::this_thread::sleep_for(std::chrono::seconds(1));auto end = std::chrono::system_clock::now();auto diff1 = std::chrono::duration_cast<std::chrono::seconds>(end - start).count();         //秒auto diff2 = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();    //毫秒auto diff3 = std::chrono::duration_cast<std::chrono::microseconds> (end - start).count();   //微妙auto diff4 = std::chrono::duration_cast<std::chrono::nanoseconds>(end - start).count();     //纳秒//std::chrono::minutes//std::chrono::hours    std::cout<<"diff1 is: "<<diff1<<std::endl;std::cout<<"diff2 is: "<<diff2<<std::endl;std::cout<<"diff3 is: "<<diff3<<std::endl;std::cout<<"diff4 is: "<<diff4<<std::endl;return 0;
}

输出

diff1 is: 1
diff2 is: 1001
diff3 is: 1001608
diff4 is: 1001608504

2. 等待时间

线程的等待时间

std::this_thread::sleep_for(std::chrono::seconds(1));

3. 获取当前时间以及时间转换

获取当前时间

auto nowTime = std::chrono::system_clock::now();
std::time_t t = std::chrono::system_clock::to_time_t(nowTime);
std::cout << "nowTime is: " << std::ctime(&t) << std::endl;    

输出

nowTime is: Fri Jun  9 08:01:18 2023

时间转换
在工作中上述的时间不是我们需要的,通常用到的时间为string和int类型:

类型说明
2023-06-09 08:01:18string类型
1686297678int64类型(秒级,10位)
1686297678549int64类型(毫秒级,13位)
1686297678549829int64类型(微妙级,16位)
1686297678549829794int64类型(纳秒级,19位)

时间类型的转换

转换类型转换类型
time_point -> stringtime_point -> int64
string -> time_pointstring -> int64
int64 -> stringint64 -> time_point

测试demo

time_conversion.hpp文件的下载地址

/** @brief: example about time format conversion by chrono* @data: 2023/06/09* @complie: g++ -g main.cc time_conversion.hpp -o d -std=c++11* @author: guokerenjian* @lastEditDate: */#include <iostream>
#include "time_conversion.hpp"using namespace t_convert;int main()
{TimeConvert tc;auto nowTime = std::chrono::system_clock::now();std::time_t t = std::chrono::system_clock::to_time_t(nowTime);std::cout << "nowTime is: " << std::ctime(&t) << std::endl;    //1.time_point -> stringstd::cout<<"time_point -> string"<<std::endl;std::string strTime;if(tc.timePointToString(nowTime, strTime)){std::cout<<"strTime is: "<<strTime<<"\n\n";}else{std::cout<<"failure"<<std::endl;}    //2.time_point -> int64std::cout<<"time_point -> int64"<<std::endl;int64_t itime{0};if(tc.timePointToInt64(nowTime, itime, TIME_TYPE::SECOND_TIME))  //秒{std::cout<<"itime is: "<<itime<<"\n";    }if(tc.timePointToInt64(nowTime, itime, TIME_TYPE::MILLISSECOND_TIME))  //毫秒{std::cout<<"itime is: "<<itime<<"\n";    }if(tc.timePointToInt64(nowTime, itime, TIME_TYPE::MICROSECOND_TIME))  //微妙{std::cout<<"itime is: "<<itime<<"\n";    }if(tc.timePointToInt64(nowTime, itime, TIME_TYPE::NANOSECOND_TIME))  //纳秒{std::cout<<"itime is: "<<itime<<"\n\n";    }    //3.string -> time_pointstd::cout<<"string -> time_point"<<std::endl;decltype(nowTime) resultTime;if(tc.stringToTimePoint(strTime, resultTime)){std::time_t t_result = std::chrono::system_clock::to_time_t(resultTime);std::cout << "resultTime is: " << std::ctime(&t_result) <<"\n\n";}    //4.string -> int64std::cout<<"string -> int64"<<std::endl;int64_t time_int{0};if(tc.stringToInt64(strTime, time_int)){std::cout<<"time_int is: "<<time_int<<"\n\n";}//5.int64 -> time_pointstd::cout<<"int64 -> time_point"<<std::endl;decltype(nowTime) resultTimeFromeInt;    int64_t time_test{0};if(tc.timePointToInt64(nowTime, time_test, TIME_TYPE::UNKOWN) && tc.Int64ToTimePoint(time_test,resultTimeFromeInt)){std::time_t t_result_int = std::chrono::system_clock::to_time_t(resultTimeFromeInt);std::cout << "t_result_int is: " << std::ctime(&t_result_int) <<"\n";}if(tc.timePointToInt64(nowTime, time_test, TIME_TYPE::MILLISSECOND_TIME) && tc.Int64ToTimePoint(time_test,resultTimeFromeInt)){std::time_t t_result_int = std::chrono::system_clock::to_time_t(resultTimeFromeInt);std::cout << "t_result_int is: " << std::ctime(&t_result_int) <<"\n";}if(tc.timePointToInt64(nowTime, time_test, TIME_TYPE::MICROSECOND_TIME) && tc.Int64ToTimePoint(time_test,resultTimeFromeInt)){std::time_t t_result_int = std::chrono::system_clock::to_time_t(resultTimeFromeInt);std::cout << "t_result_int is: " << std::ctime(&t_result_int) <<"\n";}if(tc.timePointToInt64(nowTime, time_test, TIME_TYPE::NANOSECOND_TIME) && tc.Int64ToTimePoint(time_test,resultTimeFromeInt)){std::time_t t_result_int = std::chrono::system_clock::to_time_t(resultTimeFromeInt);std::cout << "t_result_int is: " << std::ctime(&t_result_int) <<"\n\n";}//6.time_point -> stringstd::cout<<"time_point -> string"<<std::endl;std::string str_time_result;if(tc.Int64ToString(time_test, str_time_result)){std::cout<<"str_time_result is: "<<str_time_result<<std::endl;}    return 0;
}

相关文章:

std::chrono时间处理

std::chrono是C11引入的标准库&#xff0c;用于时间的计算和处理。它按照ISO8601标准定义了多个时间类&#xff0c;例如&#xff1a;duration&#xff08;持续时间&#xff09;、time_point&#xff08;时间点&#xff09;和clock&#xff08;时钟&#xff09;。以下是一些常见…...

ieda codeformatV2.xml

ieda codeformatV2.xml 目录概述需求&#xff1a; 设计思路实现思路分析1.codeformatV22.codeformatV23.codeformatV24.codeformatV25.数据处理器 拓展实现 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&…...

Hbase

java客户端 导入maven依赖 XML<dependencies> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.6</version> </dependency>…...

[golang 微服务] 5. 微服务服务发现介绍,安装以及consul的使用,Consul集群

一.服务发现介绍 引入 上一节讲解了使用 gRPC创建微服务,客户端的一个接口可能需要调用 N个服务,而不同服务可能存在 不同的服务器,这时&#xff0c;客户端就必须知道所有服务的 网络位置&#xff08;ipport&#xff09;&#xff0c;来进行连接服务器操作,如下图所示: 以往的做…...

【数据结构】哈希应用

目录 一、位图 1、位图概念 2、位图实现 2.1、位图结构 2.2、比特位置1 2.3、比特位置0 2.4、检测位图中比特位 3、位图例题 3.1、找到只出现一次的整数 3.2、找到两个文件交集 3.3、找到出现次数不超过2次的所有整数 二、布隆过滤器 1、布隆过滤器提出 2、布隆过…...

【 Python 全栈开发 - WEB开发篇 - 31 】where条件查询

文章目录 一、where条件查询1.关系运算符查询2.IN关键字查询3.BETWEEN AND关键字查询4.空值查询5.AND关键字查询6.OR关键字查询7.LIKE关键字查询普通字符串含有%通配的字符串含有_通配的字符串 一、where条件查询 MySQL 的 where 条件查询是指在查询数据时&#xff0c;通过 wh…...

Android系统的Ashmem匿名共享内存子系统分析(5)- 实现共享的原理

声明 其实对于Android系统的Ashmem匿名共享内存系统早就有分析的想法&#xff0c;记得2019年6、7月份Mr.Deng离职期间约定一起对其进行研究的&#xff0c;但因为我个人问题没能实施这个计划&#xff0c;留下些许遗憾…文中参考了很多书籍及博客内容&#xff0c;可能涉及的比较…...

谈一谈冷门的C语言爬虫

C语言可以用来编写爬虫程序&#xff0c;但是相对于其他编程语言&#xff0c;C语言的爬虫开发可能会更加复杂和繁琐。因为C语言本身并没有提供现成的爬虫框架和库&#xff0c;需要自己编写网络请求、HTML解析等功能。 不过&#xff0c;如果你对C语言比较熟悉&#xff0c;也可以…...

基于状态的维护(CBM)如何推动设备效率提高?

基于状态的维护&#xff08;Condition-Based Maintenance&#xff0c;CBM&#xff09;是一种先进的维护策略&#xff0c;通过实时监测和分析设备的状态数据&#xff0c;预测设备故障并采取相应的维护措施。CBM基于数据驱动的方法&#xff0c;能够提高设备的可用性、降低维修成本…...

DC LAB8SDC约束四种时序路径分析

DC LAB 1.启动DC2.读入设计3. 查看所有违例的约束报告3.1 report_constraint -all_violators (alias rc)3.2 view report_constraint -all_violators -verbose -significant_digits 4 (打印详细报告) 4.查看时序报告 report_timing -significant_digits 45. 约束组合逻辑(adr_i…...

学生考试作弊检测系统 yolov8

学生考试作弊检测系统采用yolov8网络模型人工智能技术&#xff0c;学生考试作弊检测系统过在考场中安装监控设备&#xff0c;对学生的作弊行为进行实时监测。当学生出现作弊行为时&#xff0c;学生考试作弊检测系统将自动识别并记录信息。YOLOv8 算法的核心特性和改动可以归结为…...

【基于容器的部署、扩展和管理】 3.2 基于容器的应用程序部署和升级

往期回顾&#xff1a; 第一章&#xff1a;【云原生概念和技术】 第二章&#xff1a;【容器化应用程序设计和开发】 第三章&#xff1a;【3.1 容器编排系统和Kubernetes集群的构建】 3.2 基于容器的应用程序部署和升级 3.2 基于容器的应用程序部署和升级 3.2 基于容器的应用程…...

Jmeter 实现 grpc服务 压测

一、Jmeter安装与配置 网上有很多安装与配置文章&#xff0c;在此不做赘述 二、Jmeter gRPC Request 插件安装 插件下载地址&#xff1a;JMeter Plugins :: JMeter-Plugins.org 将下载文件解压后放到Jmeter安装目录下 /lib/ext 然后在终端输入Jmeter即可打开 Jmeter GUI界面…...

深入源码分析RecyclerView缓存复用原理

文章目录 前言四级缓存 源码分析缓存一级缓存&#xff08;mChangedScrap和mChangedScrap&#xff09;二级缓存&#xff08;mCachedViews&#xff09;三级缓存&#xff08;ViewCacheExtension&#xff09;四级缓存&#xff08;mRecyclerPool&#xff09;缓存池mRecyclerPool结构…...

内网隧道代理技术(一)之内网隧道代理概述

内网隧道代理技术 内网转发 在渗透测试中&#xff0c;当我们获得了外网服务器&#xff08;如web服务器&#xff0c;ftp服务器&#xff0c;mali服务器等等&#xff09;的一定权限后发现这台服务器可以直接或者间接的访问内网。此时渗透测试进入后渗透阶段&#xff0c;一般情况…...

设计图形用户界面的原则

1) 一般性原则&#xff1a;界面要具有一致性、常用操作要有快捷方式、 提供简单的错误处理、对操作人员的重要操作要有信息反馈、操作可 逆、设计良好的联机帮助、合理划分并高效地使用显示屏、保证信息 显示方式与数据输入方式的协调一致 2) 颜色的使用&#xff1a;颜色…...

1:操作系统导论

1.1操作系统的定义 •Anoperatingsystemactsanintermediarybetweenuserofacomputerandthecomputer hardware. ◦ 操作系统充当计算机⽤⼾和计算机硬件之间的中介 •Thepurposeofanoperatingsystemistoprovideanenvironmentinwhichausercanexecute programsinaconvenientandeff…...

什么是微软的 Application Framework?

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天来看一下什么是微软的 Application Framework&#xff1f; 到底什么是 Application Framework&#xff1f; 还没有真正掌握任何一套Application Framework的使用之前&#xff0c;就来研究这个真的不是很…...

一个关于宏定义的问题,我和ChatGPT、NewBing、Google Bard、文心一言 居然全军覆没?

文章目录 一、问题重述二、AI 解题2.1 ChatGPT2.2 NewBing2.3 Google Bard2.4 文心一言2.5 小结 一、问题重述 今天在问答模块回答了一道问题&#xff0c;要睡觉的时候&#xff0c;又去看了一眼&#xff0c;发现回答错了。 问题描述&#xff1a;下面的z的值是多少。 #define…...

【服务器数据恢复】断电导致RAID无法找到存储设备的数据恢复案例

服务器数据恢复环境&#xff1a; HP EVA存储&#xff0c;6块SAS硬盘组建的raid5磁盘阵列。上层操作系统是WINDOWS SERVER。该存储为公司内部文件服务器使用。 服务器故障&分析&#xff1a; 在遭遇两次意外断电后&#xff0c;设备重启时raid提示“无法找到存储设备”。管理员…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

初探用uniapp写微信小程序遇到的问题及解决(vue3+ts)

零、关于开发思路 (一)拿到工作任务,先理清楚需求 1.逻辑部分 不放过原型里说的每一句话,有疑惑的部分该问产品/测试/之前的开发就问 2.页面部分(含国际化) 整体看过需要开发页面的原型后,分类一下哪些组件/样式可以复用,直接提取出来使用 (时间充分的前提下,不…...

21-Oracle 23 ai-Automatic SQL Plan Management(SPM)

小伙伴们&#xff0c;有没有迁移数据库完毕后或是突然某一天在同一个实例上同样的SQL&#xff0c; 性能不一样了、业务反馈卡顿、业务超时等各种匪夷所思的现状。 于是SPM定位开始&#xff0c;OCM考试中SPM必考。 其他的AWR、ASH、SQLHC、SQLT、SQL profile等换作下一个话题…...

大模型智能体核心技术:CoT与ReAct深度解析

**导读&#xff1a;**在当今AI技术快速发展的背景下&#xff0c;大模型的推理能力和可解释性成为业界关注的焦点。本文深入解析了两项核心技术&#xff1a;CoT&#xff08;思维链&#xff09;和ReAct&#xff08;推理与行动&#xff09;&#xff0c;这两种方法正在重新定义大模…...

scan_mode设计原则

scan_mode设计原则 在进行mtp controller设计时&#xff0c;基本功能设计完成后&#xff0c;需要设计scan_mode设计。 1、在进行scan_mode设计时&#xff0c;需要保证mtp处于standby模式&#xff0c;不会有擦写、编程动作。 2、只需要固定mtp datasheet说明的接口即可&#xf…...

分布式计算框架学习笔记

一、&#x1f310; 为什么需要分布式计算框架&#xff1f; 资源受限&#xff1a;单台机器 CPU/GPU 内存有限。 任务复杂&#xff1a;模型训练、数据处理、仿真并发等任务耗时严重。 并行优化&#xff1a;通过任务拆分和并行执行提升效率。 可扩展部署&#xff1a;适配从本地…...