主要时间类型

std::ratio<num, den> 定义分式(std::ratio模板请参考《C++新标准之std::ratio》),例如:

    std::ratio<60, 1> minutes;//<分子,分母>一分钟60秒std::ratio<60 * 60> hource;//1小时3600秒std::ratio<1, 1000> milliseconds; //1ms是1/1000秒

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,1000000000>> nanoseconds;
    chrono::minutes mintu{2};//2分钟chrono::seconds sec{3};//3秒钟chrono::milliseconds mills{500};//500毫秒auto dul = sec - mills;//两者差值,单位默认转到更小的 2500msdul.count(); //值为2500std::this_thread::sleep_for(std::chrono::milliseconds(100)); //当前线程休眠100毫秒
chrono::duration_cast<chrono::seconds>(mintu).count(); //2分钟换算为120秒

获取当前时间

time_point 表示一个时间点

chrono::system_clock::time_point now = chrono::system_clock::now();//当前时间time_point格式std::time_t oldTime = time(nullptr);//c函数获取当前时间cout << "oldTime = " << oldTime << endl;chrono::system_clock::time_point timePoint = chrono::system_clock::now();//stl库获取当前时间std::time_t newTime = chrono::system_clock::to_time_t(timePoint);//转换为旧式接口,单位:秒cout<<"newTime = " << newTime <<endl;// oldTime == timeT
/*  chrono::system_clock::time_point与std::time_t类型可相互函数*  chrono::system_clock::to_time_t()   *  chrono::system_clock::from_time_t()     */
std::time_t nowTime = chrono::system_clock::to_time_t(now);//转换为 std::time_t 格式
std::put_time(std::localtime(&nowTime), "%Y-%m-%d %X"); // 2019-06-18 14:25:56

std::put_time用法请参考《std::put_time》

struct tm cutTm = {0};
std::put_time(localtime_r(&nowTime, &cutTm), "%Y-%m-%d %X");// 2019-06-18 14:25:56

打印程序执行耗时

/** 打印耗时,取变量构造函数与析构函数的时间差,单位ms*/
class SpendTime
{
public:SpendTime():_curTimePoint(std::chrono::steady_clock::now()){}~SpendTime(){auto curTime = std::chrono::steady_clock::now();auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(curTime - _curTimePoint);cout<<"SpendTime = "<<  duration.count() <<"ms"<<endl;}private:std::chrono::steady_clock::time_point _curTimePoint;
};
#include <ctime>
#include <limits>/** 测量时间流逝* 精度依赖于操作系统或编译器,具体依赖于std::clock()的返回值精度及CLOCKS_PER_SEC值的定义*/
class Timer
{
public:Timer() : _startTime(std::clock()){}void Restart(){_startTime = std::clock();}/** 构造函数至今的耗时,单位s*/double Elapsed() const{return double(std::clock() - _startTime) / CLOCKS_PER_SEC;}/** 最小度量,以秒为单位*/double ElapsedMin() const{return double(1) / double(CLOCKS_PER_SEC);}/** 最大度量,以秒为单位*/double ElapsedMax() const{return (double(std::numeric_limits<std::clock_t>::max()) - double(_startTime) / double(CLOCKS_PER_SEC));}private:std::clock_t _startTime;//毫秒级精度
};

判断时间戳是否为当天

#include <iomanip>
#include <thread>
#include <mutex>
#include <iomanip>
#include <chrono>
#include <time.h>/** 判断是否是当天,时区问题内部已考虑* @param    timeStamp        当前时间戳(单位s)* @return   0                今天*           >0               过去几天*           <0               将来几天*/
int checkTimestamp(const std::time_t timeStamp)
{static std::time_t sLastTimestamp = 0;if (sLastTimestamp == 0) {static std::once_flag oc;std::call_once(oc, [&](){tzset();//刷新时区sLastTimestamp = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());});}const int lastDay = (sLastTimestamp - timezone)/86400;//转换到当前时区,自1970年来的天数const int curDay = (timeStamp - timezone)/86400;sLastTimestamp = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());return (curDay - lastDay);
}

std::chrono时间库详解相关推荐

  1. chrono是一个time library,C++11 std::chrono库详解

    C++11 std::chrono库详解 chrono是一个time library, 源于boost,现在已经是C++标准.话说今年似乎又要出新标准了,好期待啊! 要使用chrono库,需要#inc ...

  2. c语言标准库详解(十四):时间函数time.h

    c语言标准库详解(十四):时间函数<time.h> 概述 头文件<time.h>中声明了一些处理日期与时间的类型和函数.其中的一些函数用于处理当地时间,因为时区等原因,当地时间 ...

  3. (转)树莓派wiringPi库详解

    https://www.cnblogs.com/lulipro/p/5992172.html <div id="post_detail"> 树莓派wiringPi库详解 ...

  4. matlab中sinks,MATLAB Simulink模块库详解(二)Sinks篇

    MATLAB Simulink模块库详解(二)Sinks篇 Simulink模块库概述 1.Sources模块库,为仿真提供各种信号源 2.Sinks模块库,为仿真提供输出设备元件 3.Continu ...

  5. python爬虫之urllib库详解

    python爬虫之urllib库详解 前言 一.urllib库是什么? 二.urllib库的使用 urllib.request模块 urllib.parse模块 利用try-except,进行超时处理 ...

  6. mysql5.6+master+date_MySQL5.6的4个自带库详解

    1.information_schema详细介绍: information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式.什么是元数据呢?元数据是关于数据的数据,如数据库名或表 ...

  7. 爬虫入门之urllib库详解(二)

    爬虫入门之urllib库详解(二) 1 urllib模块 urllib模块是一个运用于URL的包 urllib.request用于访问和读取URLS urllib.error包括了所有urllib.r ...

  8. python gpu加速库比matlab快吗_Python之Unittest和Requests库详解

    1.按类来执行 import unittest class f1(unittest.TestCase): def setUp(self): pass def tearDown(self): pass ...

  9. python怎样快速下载库_Python如何急速下载第三方库详解

    前言 pip 是一个现代的,通用的 Python 包管理工具 ,是一个安装第三方 库必备的工具,提供了对Python 包的查找.下载.安装.卸载的功能.但是在国内使用有很多因素的限制,一个3.4M的库 ...

最新文章

  1. 三星教父逝世!李健熙缔造的商业传奇和争议人生
  2. String 类中怎么出现此类问题?
  3. 使用神经网络进行稀疏采样_使用python+opencv进行神经网络迁移
  4. 【OpenCV 例程200篇】07. 图像的创建(np.zeros)
  5. java GC垃圾回收
  6. 2020 【第十一届蓝桥杯省赛】 C/C++ B组 (第二场)
  7. 30分钟学习掌握springmvc、SSM
  8. 监控摄像头服务器中断是什么原因,监控系统常见问题故障及处理方法
  9. 采样点数、采样率、采样频率、平均采样次数
  10. 这些新规今起实施:侵犯民警执法权威或被追刑责
  11. Python数据分析项目-共享单车骑行数据分析
  12. 中国人工智能发展主要存在哪些制约因素,有哪些好的建议
  13. 如何制造一个XcodeGhost ?
  14. 【翻转直角三角形图案】
  15. JS: prompt() 输入框 confim()确认框 alert() 提示框
  16. 敢不敢再大一点?三星“盖世牛”二代Galaxy Note II发布!
  17. CSS3 线性渐变循环动画
  18. vue使用marked解析markdown文本遇到的坑及解决方法
  19. 复旦大学、华东师大回应
  20. 2月海外域名主机商TOP10:Godaddy居首 雅虎第7

热门文章

  1. pregquote php,PHP: preg_quote - Manual
  2. mysql 1005_MYSQL使用错误 MYSQL中ERROR 1005
  3. 博途pcpg接口无法选择_博途TIA功能,如何创建一个S7-1200的项目及硬件组态?
  4. 苹果是c语言安卓是什么语言,主流app是用什么语言开发的苹果和安卓的主流开...
  5. java jmx 配置_Java JMX远程调优一点就通
  6. 快手用户群体分析_深扒200个抖音快手账号,4亿银发人群粉丝数据得出行业新趋势...
  7. 怪哉翻译软件测试,翻译怪哉虫文言文
  8. 主线程 唤醒_python线程之九:生产者消费者3种方式,2个线程1个协程
  9. 牛客练习赛46 C 华华跟奕奕玩游戏 (期望,概率)(详解)
  10. Excel 工作表,单元格破解密码宏