iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++11时间日期库chrono的使用
  • 433
分享到

C++11时间日期库chrono的使用

2024-04-02 19:04:59 433人浏览 八月长安
摘要

目录时钟与时间点clock时间显示运行计时时间间隔durationduration模板duration_castratiochrono是c++11中新加入的时间日期操作库,可以方便地

chrono是c++11中新加入的时间日期操作库,可以方便地进行时间日期操作,主要包含了:duration, time_point, clock。

时钟与时间点

chrono中用time_point模板类表示时间点,其支持基本算术操作;不同时钟clock分别返回其对应类型的时间点。

clock

时钟是从一个时点开始,按照某个刻度的计数;chrono同时提供了三种时钟(通过now()获取当前时间点):

  • system_clock:系统时钟,相对epoch(1970-01-01 00:00:00UTC)的时间间隔;
  • steady_clock:单调时钟,只能增长(后一次调用now()得到的时间总是比前一次的值大);一般是相对于系统启动时间的时间间隔;
  • high_resolution_clock:高精度时钟(当前系统能提供的最高精度时钟,很可能就是steady_clock),也是单调的;

需要得到绝对时点的场景使用system_clock;需要得到时间间隔,且不受系统时间修改而受影响时使用steady_clock。

时间显示

在C++20中直接有to_stream直接输出system_clock时钟;但在此之前,只能通过间接的方式来输出:

auto tNow = system_clock::now();
auto tmNow = system_clock::to_time_t(tNow);
auto locNow = std::localtime(&tmNow);
cout<<std::put_time(locNow, "%Y-%m-%d %H:%M:%S")<<endl; // 2019-12-20 19:35:12

system_clock::from_time_t(...)可以把time_t类型时间转换为time_point,便于chrono使用。

运行计时

通过steady_clock/high_resolution_clock可方便的进行计时:

public:
  explicit XRunTime{bool bStart){
    if(bStart) Restart();
  }

  void Restart(){
    m_tpStart = high_resolution_clock::now();
  }

  double Stop(){
    return operator()();
  }
  double operator()(void){
    auto tpEnd = high_resolution_clock::now();
    auto elap = tpEnd - m_tpStart;
    return (double)elap.count() / std::nano::den; //返回运行的秒数,如1.00345
  }
}

时间间隔duration

chrono中使用duration模板类来表示时间间隔,并定义了从小时到纳秒的时间间隔。

duration模板

duration使用一个数值(表示时钟数)和分数(ratio)来表示具体间隔。支持基本的算术运算,并通过count()获取具体的时钟数。

template<typename _Rep, typename _Period = ratio<1>>
struct duration
{
  typedef _Rep   rep;

  constexpr _Rep count() const{
    return (_MyRep);
  }
  ...
private:
  _Rep  _MyRep;  //时钟计数
};

基准是秒,并依次定义了常用的间隔,如:

typedef duration<long long> seconds;
typedef duration<long long, milli> milliseconds;
typedef duration<long long, ratio<3600>> hours;

不同的时间间隔可以直接进行算术运算,如休眠需要毫秒参数,我们可以封装接收秒与毫秒的接口:

void MySleep(int nSec, int nMillSec){
  std::chrono::seconds secs(nSec);
  std::chrono::milliseconds mills(nMillSec);
  std::this_thread::sleep_for(secs+mills);
}

duration_cast

使用duration_cast可以方便的在不同时间单位间进行转换,如:

auto sec=seconds(123);
auto minu=duration_cast<minutes>(sec);
cout<<sec.count()<<","<<minu.count()<<endl; // 123,2

ratio

ratio是一个分数模板类,第一个参数为分子,第二个参数为分母;通过静态成员可获取:

  • num:分子
  • den:分母
typedef ratio<1, 1000> milli;
typedef ratio<1000, 1> kilo;
cout<<milli::den<<endl; // 1000

到此这篇关于C++11时间日期库chrono的使用的文章就介绍到这了,更多相关C++11时间日期库chrono 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++11时间日期库chrono的使用

本文链接: https://www.lsjlt.com/news/163678.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++11时间日期库chrono的使用
    目录时钟与时间点clock时间显示运行计时时间间隔durationduration模板duration_castratiochrono是C++11中新加入的时间日期操作库,可以方便地...
    99+
    2024-04-02
  • C++使用chrono库处理日期和时间的实现方法
    目录1. 时间间隔 duration 1.1 常用类成员 1.2 类的使用 2. 时间点 time point 3. 时钟 clocks 3.1 system_clock 3.2 s...
    99+
    2024-04-02
  • C++11中的chrono库怎么使用
    本篇内容介绍了“C++11中的chrono库怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言C++11提供了日期时间相关的库chr...
    99+
    2023-07-05
  • C++11中的chrono库详解
    目录前言1、记录时长的duration2、表示时间点的time_point3、获取系统时钟的clocks前言 C++11提供了日期时间相关的库chrono,通过chrono库可以很方...
    99+
    2023-03-19
    C++11中的chrono库 C++11 chrono库
  • Python中time库的使用(日期时间)
    time库是python中处理时间的标准库。 计算机时间的表达:time()、ctime()、gmtime(); 提供获取系统时间并格式化输出功能: strftime()、strpt...
    99+
    2023-02-02
    Python time库使用 Python time库
  • R语言日期时间的使用
    目录1.日期和日期时间类型2.从字符串生成日期数据3.日期显示格式4.访问日期时间的组成值5.日期舍入计算6.日期计算 6.1 时间长度  &...
    99+
    2024-04-02
  • Python时间和日期库的实现
    在 Python 中是没有原生数据类型支持时间的,日期与时间的操作需要借助三个模块,分别是 time、datetime、calendar。 time 模块可以操作 C 语言库中...
    99+
    2024-04-02
  • C#常用日期时间方法汇总
    一、月份英文简写 DateTime dt = DateTime.Now; string MM = dt.AddMonths(-1).ToString("MMM", new Syste...
    99+
    2024-04-02
  • Java8中如何使用日期时间
    Java8中如何使用日期时间,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。初始化日期时间初始化2020年11月11日11点11分11秒时间,这样可行吗日志输出时...
    99+
    2023-06-15
  • Python标准库之日期、时间和日历模块怎么使用
    今天小编给大家分享一下Python标准库之日期、时间和日历模块怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、ti...
    99+
    2023-06-30
  • C#常用日期时间方法有哪些
    本篇内容主要讲解“C#常用日期时间方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#常用日期时间方法有哪些”吧!一、月份英文简写DateTime dt = ...
    99+
    2023-06-30
  • Python时间与日期库有哪些
    本篇内容主要讲解“Python时间与日期库有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python时间与日期库有哪些”吧!1、ArrowArrow 是一个专门处理时间和日期的轻量级 Py...
    99+
    2023-06-17
  • C++日期和时间编程小结
    目录一,概述二,C-style 日期和时间库2.1,数据类型2.2,函数2.3,数据类型与函数关系梳理2.4,时间类型2.4.1,UTC 时间2.4.2,本地时间2.4.3,纪元时间...
    99+
    2022-12-08
    c++日期时间类 C++ 日期和时间编程 c++日期函数
  • C#日期时间格式化小结
    日期转化一 为了达到不同的显示效果有时,我们需要对时间进行转化,默认格式为:2007-01-03 14:33:34 ,要转化为其他格式,要用到DateTime.ToString的方法...
    99+
    2022-11-15
    C# 日期时间 格式化
  • Java 日期时间工具包–java.time的使用
    目录日期和时间now()of()plus()minus()时区格式化从JDK8开始,Java 提供了新的日期时间处理方法用来代替旧的日期类(Date)。本章主要讲它们的用法以及和旧日...
    99+
    2024-04-02
  • 如何使用 PHP 的日期时间函数?
    php提供了强大的日期时间函数用于操作和格式化日期时间,包含以下功能:创建 datetime 对象并获取日期和时间信息设置时区,操作日期时间(如添加一天或减去一小时)使用预定义格式化字符...
    99+
    2024-04-19
    php 日期时间函数 composer office
  • PostgreSQL的日期时间差DATEDIFF怎么使用
    本文小编为大家详细介绍“PostgreSQL的日期时间差DATEDIFF怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“PostgreSQL的日期时间差DATEDIFF怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一...
    99+
    2023-07-06
  • Ruby日期时间的比较,日期转换等时间日期处理方法大全
    Ruby中Date、Time、 DateTime这3个类提供 了和日期时间相关的操作。 Date只能处理日期Time能处理日期和时间DateTime也能处理日期和时间 其中,Date...
    99+
    2024-04-02
  • ThinkPHP(当前日期,指定日期)时间与时间戳的转换
    一、年月日时分秒,时间与时间戳的转换 public function test() { //获取当前日期 echo '直接获取到的当前日期'.date('Y-m-d H:i:s'); echo "\n";//...
    99+
    2023-09-18
    php
  • python 时间、日期、时间戳的转换
    在实际开发中经常遇到时间格式的转换,例如: 前端传递的时间格式是字符串格式,我们需要将其转换为时间戳,或者前台传递的时间格式和我们数据库中的格式不对应,我们需要对其进行转换才能与数据库的时间进行匹配等。 1、将字符串时间转换成时间戳 i...
    99+
    2023-01-31
    时间 日期 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作