IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 《c++11学习笔记》 --- 处理日期和时间的chrono库 -> 正文阅读

[C++知识库]《c++11学习笔记》 --- 处理日期和时间的chrono库

目录

1、记录时长的duration

?2、获取系统时钟的clocks

?3、计时器timer


1、记录时长的duration

duration表示一段时间间隔,用来记录时间长度,可以表示几秒、几分钟或者几个小时的时间间隔。
duration的原型如下:

template<class Rep, class Period = std::ratio<1, 1>>
class duration;

第一个模板参数Rep是一个数值类型,表示时钟数的类型;
第二个模板参数是一个默认模板参数std::ratio,表示时钟周期,它的原型如下:

template<std::intmax_t Num, std::intmax_t Denom = 1>
class ratio;

它表示每个时钟周期的秒数,其中第一个模板参数Num代表分子,Denom代表分母,分母默认为1,因此,ratio代表的是一个分子除以分母的分数值,比如ratio<2>代表一个时钟周期是两秒,ratio<60>代表一分钟, ratio<60*60>代表一个小时,?ratio<60*60*24>代表一天。而ratio <1, 1000>代表的则是1/1000秒,即一毫秒,ratio<1, 1000000>代表一微秒,ratio<1, 1000000000>代表一纳秒。为了方便使用,标准库定义了一些常用的时间间隔,如时、分、秒、毫秒、微秒和纳秒,在chrono命名空间下,它们的定义如下:

typedef duration <Rep, ratio<3600,1>> hours;

typedef duration <Rep, ratio<60,1>> minutes;

typedef duration <Rep, ratio<1,1>> seconds;

typedef duration <Rep, ratio<1,1000>> milliseconds;

typedef duration <Rep, ratio<1,1000000>> microseconds;

typedef duration <Rep, ratio<1,100oo0oo00>> nanoseconds;

?2、获取系统时钟的clocks

clocks表示当前的系统时钟,内部有time_point、duration、Rep、Period等信息,主要用来获取当前时间,以及实现time_t和 time_point 的相互转换。clocks包含如下3种时钟: system_clock:代表真实世界的挂钟时间,具体时间值依赖于系统。system_clock 保证提供的时间值是一个可读时间。
steady_clock:不能被“调整”的时钟,并不一定代表真实世界的挂钟时间。保证先后调用now()得到的时间值是不会递减的。
high_resolution_clock:高精度时钟,实际上是system_clock或者steady_clock 的别名。可以通过now()来获取当前时间点,代码如下:

std::chrono::system_clock::time_point t1 = std::chrono::system_clock::now();
cout <<"Hello world\n" ;

std::chrono::system_clock::time_point t2 = std::chrono::system_clock::now();
cout<<(t2-t1).count()<<"tick count"<<endl;

system_clock的to_time_t方法可以将一个time_point转换为ctime:

std::time_t now_c = std::chrono::system_clock::to_time_t(time_point) ;

from_time_t将ctime转为time_point。

system_clock和std:put_time配合起来使用可以格式化日期的输出。

auto t = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());

cout<< std::put_time(std::localtime(&t), "%Y-%m-%d %X")<<endl;

cout<< std::put_time(std::localtime(&t), "%Y-%m-%d %H.%M.%S" )<<endl;

?3、计时器timer

可以利用high_resolution_clock来实现一个类似于boost.timer的计时器,这样的timer在测试性能时经常用到。timer经常用于测试函数耗时,它的基本用法如下:

void fun ()
{
	cout<<"hello word"<<endl;
}
int main ()
{
	Timer t;
	//开始计时
	fun();
	cout<<t.elapsed()<<endl; //打印 fun函数耗时多少毫秒
	cout<<t.elapsed_micro()<<endl;//打印微秒
	cout<<t.elapsed_nano()<<endl ;//打印纳秒
	cout<<t.elapsed_seconds()<<endl;//打印秒
	cout<<t.elapsed_minutes()<<endl;//打印分钟
	cout<<t.elapsed_hours()<<endl;//打印小时
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-14 15:45:21  更:2021-12-14 15:45:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:07:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码