名稱空間
變體
操作

日期和時間庫

來自 cppreference.com
< cpp
 
 
日期和時間庫
 

C++ 支援兩種時間操作

目錄

[編輯] Chrono 庫 (自 C++11 起)

chrono 庫定義了幾種主要型別以及實用函式和常用 typedef

(C++20 起)

[編輯] 時鐘

時鐘由起始點(或紀元)和滴答速率組成。例如,時鐘可能有一個紀元是 1970 年 1 月 1 日,並且每秒滴答一次。C++ 定義了幾種時鐘型別

定義於標頭檔案 <chrono>
定義在名稱空間 std::chrono
系統範圍即時時鐘的掛鐘時間
(類) [編輯]
永不調整的單調時鐘
(類) [編輯]
可用最短滴答週期的時鐘
(類) [編輯]
確定一個型別是否是 時鐘
(類模板) (變數模板)[編輯]
(C++20)
用於協調世界時 (UTC) 的 時鐘
(類) [編輯]
(C++20)
用於國際原子時 (TAI) 的 時鐘
(類) [編輯]
(C++20)
用於 GPS 時間的 時鐘
(類) [編輯]
用於 檔案時間時鐘
(typedef) [編輯]
(C++20)
表示本地時間的偽時鐘
(類) [編輯]

[編輯] 時間點

時間點是自特定時鐘紀元以來經過的時長。

定義於標頭檔案 <chrono>
定義在名稱空間 std::chrono
時間中的一個點
(類模板) [編輯]
定義如何將一個時鐘的時間點轉換為另一個時鐘的時間點的特性類
(類模板) [編輯]
將一個時鐘的時間點轉換為另一個時鐘的時間點
(函式模板) [編輯]

[編輯] 時長

時長由一段時間跨度組成,定義為某個時間單位的某個滴答數。例如,“42 秒”可以由 42 個 1 秒時間單位的滴答組成的時長表示。

定義於標頭檔案 <chrono>
定義在名稱空間 std::chrono
(C++11)
時間間隔
(類模板) [編輯]

[編輯] 時間 (自 C++20 起)

hh_mm_ss 將表示自午夜以來經過的時間的時長拆分為小時、分鐘、秒和適用的小數秒。它主要是一個格式化工具。

定義於標頭檔案 <chrono>
定義在名稱空間 std::chrono
(C++20)
表示一天中的時間
(類模板) [編輯]
在 12 小時/24 小時格式之間轉換一天中的時間
(函式) [編輯]

[編輯] 日曆 (自 C++20 起)

定義於標頭檔案 <chrono>
定義在名稱空間 std::chrono
(C++20)
表示月份中 最後一天 或最後一週日的標籤類
(類) [編輯]
(C++20)
表示月份中的一天
(類) [編輯]
(C++20)
表示年份中的一個月
(類) [編輯]
(C++20)
表示公曆中的一年
(類) [編輯]
(C++20)
表示公曆中的一週中的一天
(類) [編輯]
表示月份中的第 n 個 weekday
(類) [編輯]
表示月份中的最後一個 weekday
(類) [編輯]
(C++20)
表示特定 month 中的特定 day
(類) [編輯]
表示特定 month 的最後一天
(類) [編輯]
表示特定 month 中的第 n 個 weekday
(類) [編輯]
表示特定 month 中的最後一個 weekday
(類) [編輯]
表示特定 year 中的特定 month
(類) [編輯]
表示特定的 yearmonthday
(類) [編輯]
表示特定 yearmonth 的最後一天
(類) [編輯]
表示特定 yearmonth 中的第 n 個 weekday
(類) [編輯]
表示特定 yearmonth 中的最後一個 weekday
(類) [編輯]
(C++20)
格里高利曆日期建立的傳統語法
(函式) [編輯]

[編輯] 時區 (自 C++20 起)

定義於標頭檔案 <chrono>
定義在名稱空間 std::chrono
(C++20)
描述 IANA 時區資料庫 的副本
(類) [編輯]
(C++20)
表示 tzdb 的連結串列
(類) [編輯]
訪問和控制全域性時區資料庫資訊
(函式) [編輯]
根據名稱定位 time_zone
(函式) [編輯]
返回當前的 time_zone
(函式) [編輯]
(C++20)
表示一個時區
(類) [編輯]
(C++20)
表示特定時間點關於時區的資訊
(類) [編輯]
表示有關本地時間到 UNIX 時間轉換的資訊
(類) [編輯]
(C++20)
選擇如何解決模糊的本地時間
(列舉) [編輯]
用於 zoned_time 所使用的時區指標的特性類
(類模板) [編輯]
表示時區和時間點
(類) [編輯]
包含有關閏秒插入的資訊
(類) [編輯]
閏秒插入資訊
(類) [編輯]
utc_time 物件獲取閏秒插入資訊
(函式模板) [編輯]
表示時區的別名
(類) [編輯]
報告本地時間不存在時丟擲的異常
(類) [編輯]
報告本地時間模糊時丟擲的異常
(類) [編輯]

[編輯] 字面量 (自 C++14 起)

定義於標頭檔案 <chrono>
在內聯名稱空間 std::literals::chrono_literals 中定義
表示特定年份的 std::chrono::year 字面量
(函式) [編輯]
表示月份中某天的 std::chrono::day 字面量
(函式) [編輯]
表示小時的 std::chrono::duration 字面量
(函式) [編輯]
表示分鐘的 std::chrono::duration 字面量
(函式) [編輯]
表示秒的 std::chrono::duration 字面量
(函式) [編輯]
表示毫秒的 std::chrono::duration 字面量
(函式) [編輯]
表示微秒的 std::chrono::duration 字面量
(函式) [編輯]
表示納秒的 std::chrono::duration 字面量
(函式) [編輯]

[編輯] Chrono I/O (自 C++20 起)

定義於標頭檔案 <chrono>
定義在名稱空間 std::chrono
(C++20)
從流解析 chrono 物件
(函式模板) [編輯]

[編輯] 注意

特性測試 標準 特性
__cpp_lib_chrono 201510L (C++17) std::chrono::durationstd::chrono::time_point 的舍入函式
201611L (C++17) constexpr 用於 std::chrono::durationstd::chrono::time_point 的所有成員函式
201907L (C++20) 日曆時區
202306L (C++26) std::chrono 值類的 雜湊 支援

[編輯] C 風格日期和時間庫

還提供了 C 風格的日期和時間函式,例如 std::time_tstd::difftimeCLOCKS_PER_SEC

[編輯] 示例

#include <chrono>
#include <iostream>
 
long Fibonacci(unsigned n)
{
    return n < 2 ? n : Fibonacci(n - 1) + Fibonacci(n - 2);
}
 
int main()
{
    // Measures and displays an execution time of a function call.
    const auto start{std::chrono::steady_clock::now()};
    const auto fb{Fibonacci(42)};
    const auto finish{std::chrono::steady_clock::now()};
    const std::chrono::duration<double> elapsed_seconds{finish - start};
 
    std::cout << "Fibonacci(42): " << fb << "\nElapsed time: ";
//  std::cout << elapsed_seconds.count() << "s\n"; // Before C++20
    std::cout << elapsed_seconds << '\n'; // C++20's chrono::duration operator<<
 
    // Prints UTC and local time.
    const auto tp_utc{std::chrono::system_clock::now()};
    std::cout << "Current time 'UTC' is: " << tp_utc << "\n"
                 "Current time 'Local' is: "
              << std::chrono::current_zone()->to_local(tp_utc) << '\n';
}

可能的輸出

Fibonacci(42): 267914296
Elapsed time: 0.728532s
Current time 'UTC' is: 2025-02-10 06:22:39.420666960
Current time 'Local' is: 2025-02-10 09:22:39.420666960
English 日本語 中文(简体) 中文(繁體)