最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++日期與時(shí)間 chrono庫(kù)介紹及使用教程

 更新時(shí)間:2023年12月14日 10:30:35   作者:橙皮^-^  
chrono庫(kù)是C++11中的一個(gè)標(biāo)準(zhǔn)庫(kù),它提供了一系列與時(shí)間相關(guān)的類和函數(shù),用于表示和處理時(shí)間間隔,時(shí)鐘和時(shí)間點(diǎn),C++20新增Calendar,這篇文章主要介紹了C++日期與時(shí)間 chrono庫(kù)介紹及使用,需要的朋友可以參考下

一、unix timestamp:時(shí)間戳

定義

時(shí)間戳是計(jì)算中廣泛使用的日期和時(shí)間表示形式。它通過自1970年1月1(Unix 紀(jì)元)00:00:00 UTC以來經(jīng)過的秒數(shù)(秒是毫秒、微妙、納秒的總稱)來測(cè)量時(shí)間,沒有因閏秒而進(jìn)行調(diào)整。

二、chrono庫(kù)的主要組成

chrono庫(kù)是C++11中的一個(gè)標(biāo)準(zhǔn)庫(kù),它提供了一系列與時(shí)間相關(guān)的類和函數(shù),用于表示和處理時(shí)間間隔,時(shí)鐘和時(shí)間點(diǎn),C++20新增Calendar。

chrono庫(kù)主要包含了以下四種類型:

2.1 Duration

  • Duration(時(shí)間間隔):表示一段時(shí)間的長(zhǎng)度,由一個(gè)數(shù)值(以下_Rep數(shù)值類型)和一個(gè)單位(ratio)組成,可以用于表示網(wǎng)絡(luò)時(shí)延、程序執(zhí)行耗時(shí)等
//define in std::chrono namspace
    /// `chrono::duration` represents a distance between two points in time
    template<typename _Rep, typename _Period = ratio<1>>
      class duration;
			//庫(kù)中預(yù)先定義了常用的時(shí)間長(zhǎng)度
  • count --成員函數(shù) 返回周期的統(tǒng)計(jì)數(shù)值
  • std::chrono::duration_cast 類型轉(zhuǎn)換方法
  • 例子
  std::chrono::seconds d1(100);
  std::chrono::seconds d2(50);
  //d1: 100 d2: 50
  std::cout << "d1: " << d1.count()  << " d2: " << d2.count() << std::endl;
  std::chrono::seconds d3 = d1 - d2; //同單位基本計(jì)算
  std::cout << "d3: " << d3.count() << std::endl; //d3: 50
 //std::chrono::duration_cast 使用
   std::chrono::milliseconds m = std::chrono::duration_cast<std::chrono::milliseconds>(d1);
  //100s == 100000ms
  std::cout << "100s == " << m.count() << "ms" << std::endl;
 //其他用法,當(dāng)前線程休眠 1s sleep_for 需要加 #include<thread>
  std::this_thread::sleep_for(std::chrono::seconds(1));

2.2 Clock

  • 時(shí)鐘(clock):表示一個(gè)可以測(cè)量時(shí)間的設(shè)備,提供了當(dāng)前時(shí)間點(diǎn)(now)和時(shí)間點(diǎn)之間的差值(time_since_epoch)等方法。chrono庫(kù)提供了三種時(shí)鐘,分別是:
    • 系統(tǒng)時(shí)鐘(system_clock):表示當(dāng)前系統(tǒng)范圍的實(shí)時(shí)日歷時(shí)鐘,通常與系統(tǒng)的鐘同步。它可以用于表示日期和時(shí)間,以及與其他系統(tǒng)交互。
    • 穩(wěn)定時(shí)鐘(steady_clock):表示一個(gè)單調(diào)遞增的時(shí)鐘,不受系統(tǒng)時(shí)間的調(diào)整或修改影響。它可以用于測(cè)量時(shí)間間隔,以及實(shí)現(xiàn)定時(shí)器和延時(shí)等功能。
    • 高分辨率時(shí)鐘(high_resolution_clock):表示一個(gè)具有最高精度的時(shí)鐘,通常是系統(tǒng)時(shí)鐘或穩(wěn)定時(shí)鐘的別名(using high_resolution_clock = system_clock;)。它可以用于測(cè)量極短的時(shí)間間隔,以及實(shí)現(xiàn)性能分析等功能。
  • now --成員函數(shù),放回當(dāng)前時(shí)鐘的時(shí)間點(diǎn)

2.3 TimePoint

  • 時(shí)間點(diǎn)(time_point):表示一個(gè)特定時(shí)刻,由一個(gè)時(shí)鐘和一個(gè)時(shí)間間隔組成。例如,std::chrono::system_clock::now()表示系統(tǒng)時(shí)鐘的當(dāng)前時(shí)間點(diǎn),std::chrono::steady_clock::now()表示穩(wěn)定時(shí)鐘的當(dāng)前時(shí)間點(diǎn),等等。chrono庫(kù)還提供了一些常用的時(shí)間點(diǎn)別名,如std::chrono::system_clock::time_point,std::chrono::steady_clock::time_point,std::chrono::high_resolution_clock::time_point等。
  • time_since_epoch 返回到epoch的時(shí)間間隔Duration

2.4 Calendar(c++20)

  • 日期類,用來對(duì)日期時(shí)間進(jìn)行比較。
  using namespace std::chrono_literals;
  //使用字面量 ""y ""d(C++20) 
  auto ymd1 = 2023y / std::chrono::November / 10d; // 2023-11-10
  auto ymd2 = 2023y / std::chrono::September / 10d; // 2023-9-10
  if(ymd1 > ymd2) {
 // ymd1 > ymd2
    std::cout << "ymd1 > ymd2" << std::endl;
  }

三、常見用法

3.1 獲取當(dāng)前系統(tǒng)時(shí)間戳

  //獲取系統(tǒng)時(shí)間戳,實(shí)例化系統(tǒng)時(shí)鐘
  std::chrono::system_clock clock;
  std::chrono::system_clock::time_point now = clock.now();
  std::chrono::_V2::system_clock::duration d = now.time_since_epoch();
  //納秒單位時(shí)間戳
  std::cout << "timestamp: " << d.count() << std::endl;
  //轉(zhuǎn)化為秒單位
  std::chrono::seconds t = std::chrono::duration_cast<std::chrono::seconds>(d);
  std::cout << "sec: " << t.count() << std::endl;
//簡(jiǎn)化寫法
//  std::chrono::system_clock clock;
//  auto t = std::chrono::duration_cast<std::chrono::seconds>(
//  			clock.now().time_since_epoch()).count();
//  std::cout << "sec: " << t << std::endl;

3.2 計(jì)算時(shí)間間隔

  const auto start = std::chrono::high_resolution_clock::now();
  //do something
  std::this_thread::sleep_for(std::chrono::seconds(1));
  const auto end = std::chrono::high_resolution_clock::now();
  auto duration = start - end;
  //1000118000ns 1000ms 1s 
  std::cout << duration.count() << "ns " << 
    std::chrono::duration_cast<std::chrono::milliseconds>(duration).count()<<  "ms " <<
    std::chrono::duration_cast<std::chrono::seconds>(duration).count() << "s " <<
    std::endl;

3.3 格式化輸出

  auto now = std::chrono::system_clock::now();
  std::time_t now_c = std::chrono::system_clock::to_time_t(now);
  //cur time Thu Nov  9 23:42:38 2023
  std::cout << "cur time " << std::ctime(&now_c) << std::endl;
  //或者轉(zhuǎn)化為當(dāng)?shù)貢r(shí)間
  //自定義格式輸出
  tm * t = std::localtime(&now_c);
	char buffer[80];
	std::strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", t);
   //cur time: 2023-11-09 23:42:38
  std::cout << "cur time: " << buffer << std::endl;

3.4 字面量使用

  //使用字面量 c++20 ""y ""d  c++11 支持 ""h ""min ""s ""ms ""us
  using namespace std::chrono_literals;//在此空間定義字面量
  auto s = 60s; // 相當(dāng)于std::chrno::seconds(60)
  std::cout << "sec: " << s.count() << std::endl;
  auto min = 1min; // 相當(dāng)于std::chrono::minutes(1):
  std::cout << "min: " << min.count() << std::endl;

到此這篇關(guān)于C++日期與時(shí)間 chrono庫(kù)介紹及使用的文章就介紹到這了,更多相關(guān)C++日期與時(shí)間chrono庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言中static與sizeof查缺補(bǔ)漏篇

    C語(yǔ)言中static與sizeof查缺補(bǔ)漏篇

    static在修飾變量的時(shí)候,如果是修飾全局變量,則跟全局變量功能一樣;如果是修改局部變量,則每次調(diào)用的時(shí)候,保持著上一次的值;而sizeof是用來判斷一個(gè)變量及數(shù)據(jù)類型所占字節(jié)數(shù)的,下面我們?cè)敿?xì)來看看
    2022-07-07
  • c語(yǔ)言的形參和實(shí)參傳遞的區(qū)別詳解

    c語(yǔ)言的形參和實(shí)參傳遞的區(qū)別詳解

    這篇文章主要介紹了c語(yǔ)言的形參和實(shí)參傳遞的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 一起來學(xué)習(xí)C語(yǔ)言的字符串轉(zhuǎn)換函數(shù)

    一起來學(xué)習(xí)C語(yǔ)言的字符串轉(zhuǎn)換函數(shù)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言的字符串轉(zhuǎn)換函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C++超詳細(xì)講解單鏈表的實(shí)現(xiàn)

    C++超詳細(xì)講解單鏈表的實(shí)現(xiàn)

    單鏈表是后面要學(xué)的雙鏈表以及循環(huán)鏈表的基礎(chǔ),要想繼續(xù)深入了解數(shù)據(jù)結(jié)構(gòu)以及C++,我們就要奠定好這塊基石!接下來就和我一起學(xué)習(xí)吧
    2022-03-03
  • vector list map 遍歷刪除制定元素 防止迭代器失效的實(shí)例

    vector list map 遍歷刪除制定元素 防止迭代器失效的實(shí)例

    下面小編就為大家?guī)硪黄獀ector list map 遍歷刪除制定元素 防止迭代器失效的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • C語(yǔ)言數(shù)據(jù)的存儲(chǔ)專項(xiàng)分析

    C語(yǔ)言數(shù)據(jù)的存儲(chǔ)專項(xiàng)分析

    使用編程語(yǔ)言進(jìn)行編程時(shí),需要用到各種變量來存儲(chǔ)各種信息。變量保留的是它所存儲(chǔ)的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個(gè)變量時(shí),就會(huì)在內(nèi)存中保留一些空間。您可能需要存儲(chǔ)各種數(shù)據(jù)類型的信息,操作系統(tǒng)會(huì)根據(jù)變量的數(shù)據(jù)類型,來分配內(nèi)存和決定在保留內(nèi)存中存儲(chǔ)什么
    2022-07-07
  • C語(yǔ)言中extern詳細(xì)用法解析

    C語(yǔ)言中extern詳細(xì)用法解析

    這篇文章主要介紹了C語(yǔ)言中extern詳細(xì)用法解析,本文講解的extern也是C語(yǔ)言中的關(guān)鍵詞,用來修飾函數(shù)聲明或變量等,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Qt5.9繼承QObject創(chuàng)建多線程實(shí)例

    Qt5.9繼承QObject創(chuàng)建多線程實(shí)例

    本文主要介紹了Qt5.9繼承QObject創(chuàng)建多線程實(shí)例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Qt spdlog日志模塊的使用詳解

    Qt spdlog日志模塊的使用詳解

    在Qt應(yīng)用程序開發(fā)中,良好的日志系統(tǒng)至關(guān)重要,本文將介紹如何使用spdlog 1.5.0創(chuàng)建滿足以下要求的日志系統(tǒng),感興趣的朋友一起看看吧
    2025-04-04
  • C語(yǔ)言將日期、時(shí)間保存到文本文件中的方法

    C語(yǔ)言將日期、時(shí)間保存到文本文件中的方法

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言將日期、時(shí)間保存到文本文件中的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C語(yǔ)言具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評(píng)論

合江县| 嘉峪关市| 乡城县| 贵阳市| 房产| 东阿县| 巫溪县| 阳信县| 柳江县| 新安县| 辽宁省| 南部县| 东至县| 蒙阴县| 宜兰县| 唐山市| 昭平县| 连江县| 鄂托克旗| 增城市| 丰顺县| 五寨县| 邢台市| 石家庄市| 鲜城| 仙居县| 河西区| 南漳县| 彩票| 霍林郭勒市| 白沙| 繁峙县| 轮台县| 盐边县| 阳信县| 阳泉市| 大冶市| 彩票| 垫江县| 凤城市| 慈利县|