<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
現在是typedef
的chrono::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 結構 |
描述 和 具現化duration time_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_zone 和 time_point 配對。 |
zoned_traits 結構 |
用來將不同的預設時區與 zoned_time 產生關聯,並選擇性地將自定義名稱對應至該預設時區。 |
例外狀況
名稱 | 描述 |
---|---|
ambiguous_local_time |
當 轉換成 sys_time ,且結果模棱兩可時local_time 擲回錯誤。 |
nonexistent_local_time |
當 轉換成 sys_time ,且結果為不存在的時間時local_time 擲回的錯誤。 |
函式
名稱 | 描述 |
---|---|
ceil(duration) |
傳ceil duration 回 物件的 做為指定型別的 。 |
ceil(time_point) |
傳ceil time_point 回 物件的 做為指定型別的 。 |
clock_cast |
將 time_point 從一個時鐘轉換為另一個時鐘的對等 time_point 。 |
duration_cast |
將 duration 物件轉換為指定的類型。 |
floor(duration) |
傳floor duration 回 物件的 做為指定型別的 。 |
floor(time_point) |
傳floor time_point 回 物件的 做為指定型別的 。 |
from_stream() |
使用指定的格式,將輸入數據流剖析為其中 std::chrono 一個時間間隔類型,例如 day 、 month 、 weekday 、 year 等等。 |
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_point 的 file_clock 。 您可以指定 Duration ,例如 file_time<seconds> ft; 。 |
gps_seconds |
與相關聯gps_clock 之 time_point 的秒數同義gps_time<seconds>; 字。 |
gps_time |
time_point<gps_clock, Duration> 的同義字。 表示 time_point 的 gps_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_time time_zone 時,您才會取得可轉換成 UTC 時間的時間點,或特定時區的時間。 |
sys_days |
sys_time<days> 的同義字。 自 system_clock epoch 之後的天數計數,以 time_point 與 system_clock 相關聯的 表示。 |
sys_seconds |
sys_time<seconds> 的同義字。 自 1970 年 1 月 1 日 00:00:00:00 UTC 之後的非閏秒 system_clock 計數,以 time_point 與 system_clock 相關聯的 表示。 |
sys_time |
time_point<system_clock, Duration> 的同義字。 您可以指定 Duration ,例如 sys_time<seconds> st; 。 表示 time_point 從 system_clock::now() 傳回的 。 它代表 Unix 時間,其接近 UTC 時間。 |
tai_seconds |
tai_time<seconds> 的同義字。 秒數,以 time_point 與 tai_clock 相關聯的 表示。 |
tai_time |
time_point<tai_clock, Duration> 的同義字。 您可以提供 Duration ,例如 tai_time<seconds> tt; 。 表示 time_point 的 tai_clock 。 |
utc_seconds |
同義字 utc_time<seconds>; |
utc_time |
time_point<utc_clock, Duration> 的同義字。 您可以提供 Duration ,例如 utc_time<seconds> ut; 。 表示 time_point 的 utc_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;