c++11 Chrono时间库
c++11 Chrono时间库
http://en.cppreference.com/mwiki/index.php?title=Special%3ASearch&search=chrono
1. 持续时间 duration
template<class Rep, class Period = ratio<1>>
class duration;
class Rep: 滴答数
class Period: 滴答周期,默认1秒
1) 常用方法
count / zero / min / max
支持算术运算 + - * / % ++ -- += -= *= /= %= (不同的Period之间会自动转换)
2) 示例
duration<long, ratio<60>> d1(2); //2分钟
duration<long, ratio<1>> d2(30); //30秒
duration<double, ratio<60>> d3 = d1+d2; //2.5分
count << d3.count() << "minutes" << endl;
3) 标准定义
//X 64 bits表示:有符号整数类型,且位数至少为64位
typedef duration<X 64 bits, nano> nanoseconds; //纳秒
typedef duration<X 55 bits, micro> microseconds; //微秒
typedef duration<X 45 bits, milli> milliseconds; //毫秒
typedef duration<X 35 bits> seconds; //秒
typedef duration<X 29 bits, ratio<60>> minutes; //分
typedef duration<X 23 bits, ratio<3600>> hours; //时
//例
auto t = hours(1) + minutes(2) + seconds(45);
count << seconds(t).count() << endl;
2. 时钟 clock
- system_clock 系统实时时钟的真实时间
- steady_clock time_point绝不递减的时钟
- high_resolution_clock 高精度时钟
1) 常用接口
// 均为静态接口
now() //获取类型为time_point的当前时间点
to_time_t() //将time_point转换为time_t类型
from_time_t() //将time_t转换为time_point类型
localtime可将time_t类型转换为tm表示的本地时间
2) 示例
//获取当前时间
#include <time.h> // time_t, locaktime, tm
#include <iomanip> // put_time
system_clock::time_point tpoint = system_clock::now();
time_t tt = system_clock::to_time_t(tpoint);
tm* t = locaktime(&tt);
cout << put_time(t, "%H:%M:%S") << endl;
//计算代码的执行时间
auto start = system_clock::now();
// ... to do something
auto end = system_clock::now();
auto diff = end - start;
cout << duration<double, milli>(diff).count() << "ms" << endl;
3. 时点 time_point
- time_point是一个时间点,存储相对于纪元(1970/01/01)的一个duration。
- time_since_epoch() 返回当前时间点到纪元的duration。
- 每一个time_point都关联一个clock,创建时需指定clock作为模板参数。
1) 构造函数
time_point(); //通过duration::zero初始化表示关联clock的纪元
time_point(const duration& d); //通过duration初始化表示纪元+d
template<class Duration2>
time_point(const time_point<clock, Duration2>& t); //通过t.time_since_epoch初始化
2) 示例
time_point<steady_clock> tp1;
tp1 += minutes(10);
auto d1 = tp1.time_since_epoch();
duration<double> d2(d1);
cout << d2.count() << "seconds" << endl;
c++11 Chrono时间库的更多相关文章
- 你可能没听过的11个Python库
目前,网上已有成千上万个Python包,但几乎没有人能够全部知道它们.单单 PyPi上就有超过47000个包列表. 现在,越来越多的数据科学家开始使用Python,虽然他们从 pandas, scik ...
- 比特币源码分析--C++11和boost库的应用
比特币源码分析--C++11和boost库的应用 我们先停下探索比特币源码的步伐,来分析一下C++11和boost库在比特币源码中的应用.比特币是一个纯C++编写的项目,用到了C++11和bo ...
- moment太重? 那就试试miment--一个超轻量级的js时间库
介绍 Miment 是一个轻量级的时间库(打包压缩后只有1K),没有太多的方法,Miment的设计理念就是让你以几乎为零的成本快速上手,无需一遍一遍的撸文档 由来 首先 致敬一下Moment,非常好用 ...
- java时间库Joda-Time
虽然在java8里面有内置的最新的时间库,但是在java8之前的版本所有的时间操作都得自己写,未免有些繁琐,如果我们不自己封装的话可以用Joda-Time这个时间库,下面写下这个库的具体用法. git ...
- ⏰Day.js 2kB超轻量时间库 和Moment.js一样的API
Moment.js 是一个大而全的 JS 时间库,很大地方便了我们处理日期和时间.但是 Moment.js太重了(200k+ with locals),可能一般项目也只使用到了她几个常用的API.虽然 ...
- js非常强大的日历控件fullcalendar.js, 日期时间库: moment.js
日历控件: https://fullcalendar.io/docs/ https://fullcalendar.io/docs/event_data/events_function/ https:/ ...
- moment.js 时间库
一.概念: https://www.cnblogs.com/Jimc/p/10591580.html 或 http://momentjs.cn/(官网) 1.Moment.js是一个 ...
- Java8新特性探索之新日期时间库
一.为什么引入新的日期时间库 Java对日期,日历及时间的处理一直以来都饱受诟病,尤其是它决定将java.util.Date定义为可修改的以及将SimpleDateFormat实现成非线程安全的. 关 ...
- (原创)c++11中的日期和时间库
c++11提供了日期时间相关的库chrono,通过chrono相关的库我们可以很方便的处理日期和时间.c++11还提供了字符串的宽窄转换功能,也提供了字符串和数字的相互转换的库.有了这些库提供的便利的 ...
随机推荐
- Session和Cookie的分析与区别
首先说一下Web.config文件中的cookieless="false"的理解 cookieless="false"表示: 如果用户浏览器支持cookie时启 ...
- jgroups 入门
官网地址:http://www.jgroups.org/ 聊天室示例:http://www.jgroups.org/tutorial/html/ch02.html 2.1. JGroups overv ...
- 子iframe刷新父ifrmae的方法
//子iframe刷新父ifrmae的方法parent.location.href="";parent.location.reload();
- C:进制
进制.C语言内存分配 1.对于进制 10进制 (0 - 9)16进制 (0——9 A B C D E F)硬件中的高低电平(0 和 1表示)所以计算机用 二进制 机器语言就是由 0 和 1 组成的一 ...
- js url图片转bese64
function convertImgToDataURLviaCanvas(url, callback, outputFormat){ var img = new Image(); img.cross ...
- Task could not find "AxImp.exe" using the SdkToolsPath "C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\"
本机v7.0A目录里没有AxImp.exe,无奈只能去官网下了个V7.1的. 安装完V7.1后,去“开始-所有程序-Microsoft Windows SDK v7.1”里找到Windows SDK ...
- C++ for循环效率
1.考虑二维数组,在C++中,以先行后列的方式存储连续的数组元素.也就是同一行的元素在一起,同一列的元素之间有间隔,且间隔相同.理想情况下,二维数组的元素是随机访问的,可以直接定位,即i*列数+j.因 ...
- Codeforces Round #338 (Div. 2) B. Longtail Hedgehog dp
B. Longtail Hedgehog 题目连接: http://www.codeforces.com/contest/615/problem/B Description This Christma ...
- C#中的ICollection接口
一.集合类: 1.1 ICollection接口 前面我们学习了数组,这是.net Framework定义的最基本的集合类型,除过数组外,.net Framework还另外定义了很多集合类型以满足编程 ...
- C#利用lambda在函数中创建内部函数
有使用过JS的朋友,相信都知道function.JS中的function是可以在里面在定义一个作为内部使用的.有时为了控制作用域,或者这种小函数只在这个函数体内会使用,所以就不希望在外部在作额外的定义 ...