分享方式:


<chrono>

包含標準標頭 <chrono> ,以定義類別和函式,這些類別和函式代表和操作時間持續時間和時間瞬間。

從 Visual Studio 2015 開始,的 steady_clock 實作已變更,以符合穩定性和單調性C++標準需求:

  • steady_clock 現在是以 QueryPerformanceCounter()
  • high_resolution_clock 現在是 in the Microsoft C++ 實作的 steady_clock typedef, steady_clock::time_point 現在是 typedefchrono::time_point<steady_clock>。 不過,這不一定是其他實作的情況。

需求

標頭: <chrono>

區域立法機構偶爾會變更時區,而國際標準機構指定何時應考慮新的閏秒。 這些變更的資料庫已新增至 Windows 10。 具體而言:

功能 用戶端版本 伺服器版本
Leap second database updates Windows 10 版本 1809 或更新版本 Windows Server 2019 或更新版本
時區支援 Windows 10 版本 1903/19H1 或更新版本 Windows Server 2022 或更新版本

在舊版 Windows 上使用時區設施會導致運行時錯誤。

命名空間std

Calendrical 類型

名稱 描述
common_type 結構 描述 和 具現化durationtime_point之類別範本common_type的特製化。
day 類別 當月的一天。 例如,當月的第 25 天。
duration 類別 時間間隔。
duration_values 結構 提供 duration 範本參數 Rep 的特定值。
hh_mm_ss 類別 duration 分割成小時:分鐘:秒。
last_spec 用來指出月份的最後一個專案,例如一個月的最後一天(2020 年 2 月的最後一個星期二)或一個月的最後一天(2019 年 4 月的最後一天)。
leap_second 類別 插入之閏秒的日期和值。
leap_second_info 結構 get_leap_second_info 傳回的資料。
month 類別 一年一個月。 例如,7 月。
month_day 類別 特定月份的特定日期。 例如,7 月 30 日。
month_day_last 類別 一個月的最後一天。
month_weekday 類別 特定月份的第 n 個工作日。
month_weekday_last 類別 特定月份的第 n 個工作日。
time_point 類別 時間點。
weekday 類別 一周中的一天。
weekday_last 類別 一個月的最後一個工作日。
weekday_indexed 類別 結合星期幾與代表月份工作日的索引。
year 類別 公曆中的一年。
year_month 類別 一年和月。 未指定日期。
year_month_day 類別 一年、月和日。
year_month_day_last 類別 特定月份和年份的最後一天。
year_month_weekday 類別 月份的特定年份、月份和第 n 個工作日。
year_month_weekday_last 類別 當月的特定年份、月份和最後一個工作日。

時鐘

名稱 描述
file_clock 類別 用於的 std::filesystem::file_time_type時鐘別名,用來表示檔案時間戳。
gps_clock 類別 保持 GPS 時間的時鐘。 測量時間從 1980 年 1 月的第一個星期日開始,於 1980 年 1 月 00:00:00 UTC 開始。
high_resolution_clock 結構 具有奈秒刻度週期的時鐘。
local_t 結構 虛擬時鐘,用來做為範本的 time_point 自變數,以表示 time_point 當地時間。
steady_clock 結構 時鐘 steady 。 此時鐘是用來測量時間間隔的慣用時鐘。
system_clock 結構 以系統即時時鐘為基礎的時鐘。
tai_clock 類別 從1958年1月1日星期四開始,1958年1月1日00:00:00開始。 此時鐘不會考慮閏秒。
utc_clock 類別 測量自 1970 年 1 月 1 日星期四 UTC 00:00:00 起算起的時間。 此時鐘適用於閏秒,而且是世界各地的使用時間標準。

時區

名稱 描述
choose 列舉,指定如何將 的模棱兩可轉換 local_time 解析為 sys_time
local_info 提供將 轉換成 local_time sys_time之結果的時區資訊低階介面。
sys_info 提供將 轉換成 sys_time local_time之結果的時區資訊低階介面。
time_zone 類別 特定地理區域的所有時區轉換。
time_zone_link 類別 time_zone替代名稱。
tzdb 結構 表示時區資料庫的複本。
tzdb_list 類別 時區資料庫的單一清單。
zoned_time 類別 具有指定有效位數的 time_zonetime_point 配對。
zoned_traits 結構 用來將不同的預設時區與 zoned_time產生關聯,並選擇性地將自定義名稱對應至該預設時區。

例外狀況

名稱 描述
ambiguous_local_time 當 轉換成 sys_time ,且結果模棱兩可時local_time擲回錯誤。
nonexistent_local_time 當 轉換成 sys_time ,且結果為不存在的時間時local_time擲回的錯誤。

函式

名稱 描述
ceil(duration) ceilduration回 物件的 做為指定型別的 。
ceil(time_point) ceiltime_point回 物件的 做為指定型別的 。
clock_cast time_point 從一個時鐘轉換為另一個時鐘的對等 time_point
duration_cast duration 物件轉換為指定的類型。
floor(duration) floorduration回 物件的 做為指定型別的 。
floor(time_point) floortime_point回 物件的 做為指定型別的 。
from_stream() 使用指定的格式,將輸入數據流剖析為其中 std::chrono 一個時間間隔類型,例如 daymonthweekdayyear等等。
get_leap_second_info leap_second_info取得結構
is_am 物件是否 hours 為AM。
is_pm 物件是否 hours 為 PM。
locate_zone 取得指定的時區。
make12 以 12 小時的形式傳 hours 回 。
make24 以 24 小時格式傳 hours 回 。
round(duration) duration 回以指定型別四捨五入的物件。
round(time_point) time_point 回以指定型別四捨五入的物件。
time_point_cast time_point 物件轉換為指定的類型。

時區相關

名稱 描述
current_zone 取得目前的時區。
get_tzdb 取得第一個時區資料庫專案。
get_tzdb_list 取得時區資料庫項目的清單。
reload_tzdb 取得更新的時區資料庫專案。
remote_version 檢查更新的時區資料庫專案。

操作員

名稱 描述
operator- 減去或否定各種 <chrono> 物件。
operator!= 與各種 <chrono> 物件搭配使用的不等比較運算符。
operator modulo duration 物件的模數運算運算子。
operator* duration 物件的乘法運算子。
operator/ duration 物件的除法運算子。
operator/ 提供建立行事曆日期的語法。
operator+ 新增至各種 <chrono> 物件。
operator< 判斷各種 <chrono> 物件是否小於另一個物件。
operator<= 判斷各種 <chrono> 物件是否小於或等於另一個物件。
operator== 判斷各種 <chrono> 物件是否彼此相等。
operator> 判斷各種 <chrono> 物件是否大於另一個物件。
operator>= 判斷各種 <chrono> 物件是否大於或等於另一個物件。

Typedefs

如需下列 typedefs 中使用的比率類型詳細資訊,請參閱 <ratio>

便利 duration 類型

名稱 描述
typedef duration<long long, nano> nanoseconds; duration類型同義字,其刻度週期為10億秒(1/1,000,000,000)。
typedef duration<long long, micro> microseconds; duration類型同義字,其刻度為一百萬分之一(1/1,000,000) 秒。
typedef duration<long long, milli> milliseconds; duration類型同義字,其刻度為一千分之一 (1/1,000) 秒。
typedef duration<long long> seconds; duration類型同義字,其刻度週期為1秒。
typedef duration<int, ratio<60>> minutes; duration類型同義字,其刻度週期為1分鐘。
typedef duration<int, ratio<3600>> hours; duration類型同義字,其刻度週期為1小時。

便利 time_point 類型

名稱 描述
file_time time_point<file_clock, Duration> 的同義字。 表示 time_pointfile_clock。 您可以指定 Duration,例如 file_time<seconds> ft;
gps_seconds 與相關聯gps_clocktime_point 的秒數同義gps_time<seconds>;字。
gps_time time_point<gps_clock, Duration> 的同義字。 表示 time_pointgps_clock。 您可以指定 Duration,例如 gps_time<milliseconds> gps;
local_days local_time<days> 的同義字。 天數計數,以 time_point 與任何時區無關的 表示。
local_seconds local_time<seconds> 的同義字。
local_time time_point<local_t, Duration> 的同義字。 表示 time_point 尚未與時區相關聯之當地時間的 。 您可以指定 Duration,例如 local_time<seconds> lt;local_time是當地時間 這不是您電腦時鐘的目前本地時間。 只有當您將 與 配對local_timetime_zone時,您才會取得可轉換成 UTC 時間的時間點,或特定時區的時間。
sys_days sys_time<days> 的同義字。 自 system_clock epoch 之後的天數計數,以 time_pointsystem_clock相關聯的 表示。
sys_seconds sys_time<seconds> 的同義字。 自 1970 年 1 月 1 日 00:00:00:00 UTC 之後的非閏秒 system_clock 計數,以 time_pointsystem_clock相關聯的 表示。
sys_time time_point<system_clock, Duration> 的同義字。 您可以指定 Duration,例如 sys_time<seconds> st;。 表示 time_pointsystem_clock::now()傳回的 。 它代表 Unix 時間,其接近 UTC 時間。
tai_seconds tai_time<seconds> 的同義字。 秒數,以 time_pointtai_clock相關聯的 表示。
tai_time time_point<tai_clock, Duration> 的同義字。 您可以提供 Duration,例如 tai_time<seconds> tt;。 表示 time_pointtai_clock
utc_seconds 同義字 utc_time<seconds>;
utc_time time_point<utc_clock, Duration> 的同義字。 您可以提供 Duration,例如 utc_time<seconds> ut;。 表示 time_pointutc_clock

類型特性

名稱 描述
clock_time_conversion 特性,指定如何將 從一個時鐘轉換成 time_point 另一個時鐘。
is_clock 檢查類型是否為時鐘。
treat_as_floating_point 檢查 是否可以 duration 轉換成具有不同刻度週期的另一個 duration

常值

(C++11) 標頭 <chrono> 會定義下列 使用者定義的常值 ,讓您能夠更方便、類型安全及維護程序代碼。 這些常值定義在內嵌命名空間中 literals::chrono_literals ,且在範圍中時 std::chrono 位於範圍中。

宣告 描述
hours operator "" h(unsigned long long Val) 將小時指定為整數值。
duration<double, ratio<3600>> operator "" h(long double Val) 將小時指定為浮點值。
minutes (operator "" min)(unsigned long long Val) 將分鐘指定為整數值。
duration<double, ratio<60>> (operator "" min)( long double Val) 將分鐘指定為浮點值。
seconds operator "" s(unsigned long long Val) 將分鐘指定為整數值。
duration<double> operator "" s(long double Val) 將秒數指定為浮點值。
milliseconds operator "" ms(unsigned long long Val) 將毫秒指定為整數值。
duration<double, milli> operator "" ms(long double Val) 將毫秒指定為浮點值。
microseconds operator "" us(unsigned long long Val) 將微秒指定為整數值。
duration<double, micro> operator "" us(long double Val) 將微秒指定為浮點值。
nanoseconds operator "" ns(unsigned long long Val) 將奈秒指定為整數值。
duration<double, nano> operator "" ns(long double Val) 將奈秒指定為浮點值。

下列範例示範如何使用 <chrono> 常值:

constexpr auto day = 24h;
constexpr auto week = 24h* 7;
constexpr auto my_duration_unit = 108ms;

另請參閱

標頭檔參考