首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++11 庫詳解:時間點、時長與時鐘

     編輯:關於C++

核心概念

  • Duration(時長):表示時間跨度,如 1 分鐘、2 小時、10 毫秒。模板 duration,Rep 為計數類型,Period 為刻度(如 std::milli)。
  • Time Point(時間點):相對於某個紀元的時長。模板 time_point。
  • Clock(時鐘):提供當前時間點。標準庫提供三種:
    system_clock(系統實時鐘,可映射到日曆時間),
    steady_clock(單調遞增,適合計時),
    high_resolution_clock(最高精度,可能是上述兩者的別名)。

常用操作示例

1. 時長運算與轉換

using namespace std::chrono;
hours h(24);                       // 24 小時
minutes m = duration_cast(h); // 1440 分鐘
milliseconds ms = h;               // 隱式轉換(精度提升)
cout << ms.count() << "ms";        // 86400000

2. 獲取當前時間點並格式化輸出

auto now = system_clock::now();
time_t tt = system_clock::to_time_t(now);
cout << ctime(&tt); // 如 "Wed Jan 14 10:37:00 2016\n"

3. 精確測量代碼執行時間

auto t1 = high_resolution_clock::now();
// ... 待測代碼 ...
auto t2 = high_resolution_clock::now();
duration elapsed = t2 - t1;
cout << "耗時: " << elapsed.count() << " 秒";

4. 自定義時長單位

using shakes = duration>; // 1 shake = 10ns
shakes s(100); // 100 shakes = 1 微秒

注意事項

  • system_clock 可能被用戶調整系統時間導致倒退,計時請用 steady_clock。
  • duration_cast 只能向低精度轉換(截斷),向高精度可隱式轉換。
  • C++20 引入 std::chrono::zoned_time、format 等更強大的日曆/時區功能。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved