utc_clock
類別
國際標準時間(UTC)的時鐘,有時被稱為格林威治平均時間(GMT)或祖魯時間。 當地時間會根據您的時區從UTC時間調整。
語法
class utc_clock; // C++20
備註
此時鐘會測量自 1970 年 1 月 1 日星期四 00:00:00 UTC 以來的時間。 這個時鐘佔了閏秒,是世界各地民用時間的基礎。
UTC 時間的速率是以使用原子時鐘來追蹤時間的國際原子時間(TAI)為基礎。 不過,閏秒偶爾會新增至 UTC 時間,以在 +- 0.9 秒內保留 UTC 時間與 UT1(太陽時間)之間的差異。
原子時鐘所保留的時間與追蹤地球旋轉所保留的時間不一致。 這是因為地球的旋轉速度不規則,一般來說,每1.5年大約一秒的速度就會減速(雖然有時地球的旋轉速度會增加)。 閏秒調整會將UTC追蹤時間保持在一天平均長度的一秒內。
從本文開始,自1972年開始插入閏秒的做法以來,增加了27個閏秒。 國際地球旋轉和參考系統服務(IERS)決定何時將加入閏秒。 新增閏秒稱為「閏秒插入」。 插入閏秒時,時間接近午夜時,從 23 小時 59 分 59 秒到 23 小時 59 分 60 秒(插入的閏秒),然後到 0 小時 0 分 0 分 0 秒(午夜)。 從歷史上看,6 月 30 日或 12 月 31 日新增了閏秒。
根據定義,UTC 時間開始落後 TAI 10 秒(原子時間)。 1972年已將10秒新增至TAI時間,以容納該點累積的閏秒。 假設自那以後又插入了 27 個閏秒,UTC 時間目前比 TAI (不可部分完成時鐘) 時間落後 37 秒。
成員
名稱 | 描述 |
---|---|
from_sys |
靜態。 將 sys_time 轉換成 utc_time 。 |
now |
靜態。 傳回目前時間。 |
to_sys |
靜態。 將 utc_time 轉換成 sys_time 。 |
非成員
名稱 | 描述 |
---|---|
from_stream |
utc_time 使用指定的格式,從指定的資料串流剖析 。 |
get_leap_second_info |
取得leap_second_info,指出提供的時間是否指定插入閏秒的時間。 它也包含 1970 年 1 月 1 日與指定持續時間之間的所有閏秒總和。 |
operator<< |
utc_time 將 輸出至指定的數據流。 |
便利類型別名
名稱 | 描述 |
---|---|
utc_clock::duration |
在 Microsoft 的實作中,它是 的 duration<system_clock::rep, system_clock::period> 同義字。 它代表以 100 奈秒為單位測量的時間持續時間。 |
utc_clock::period |
Microsoft 的實作會將此定義為 的同義字 system_clock::period 。 它代表持續時間中每個刻度之間的秒數 (100 奈秒) 時間。 |
utc_clock::rep |
型別 (long long ) 的同義字,用來表示這個時鐘中整數單位。utc_clock::duration |
utc_clock::time_point |
time_point<utc_clock> 的同義字。 用來表示 time_point 這個時鐘的 。 |
相關
名稱 | 描述 |
---|---|
utc_seconds |
同義字 using utc_seconds = utc_time<seconds>; |
utc_time |
代表 template<class Duration> using utc_time = time_point<utc_clock, Duration>; time_point 的utc_clock 同義字。 您可以指定持續時間。 在中定義 std::chrono |
公用常數
名稱 | 描述 |
---|---|
[utc_clock::is_steady constant] (#is_steady_constant) |
指出時鐘類型是否穩定。 其值為 false 。 |
需求
標頭: <chrono>
(自C++20起)
命名空間:std::chrono
編譯程序選項: /std:c++latest
from_sys
將轉換成 sys_time
的 utc_time
靜態方法。
template<class Duration>
static utc_time<common_type_t<Duration, seconds>>
from_sys(const sys_time<Duration>& t);
參數
t
要進行轉換的 sys_time
。
傳回值
utc_time
設定為最接近的時機sys_time
t
。 如果直接對應不存在,則會傳回在閏秒插入期間time_point以及插入閏秒之前的最後一個可表示值 sys_time
。
to_sys
將轉換成 utc_time
的 sys_time
靜態方法。
template<class Duration>
static sys_time<common_type_t<Duration, seconds>>
to_sys(const utc_time<Duration>& t);
參數
t
要進行轉換的 utc_time
。
傳回值
sys_time
設定為與 相等的時間t
點。 如果直接對應不存在,在插入閏秒 t
之前,它是最後一個可表示的值,代表插入閏秒的時間點。 新增閏秒稱為「閏秒插入」。 插入閏秒時,接近午夜的時間從 23 小時 59 分 59 秒到 23 小時 59 分 60 秒(插入的閏秒),然後到 0 小時 0 分 0 分 0 秒(午夜)。 在過去,在 6 月 30 日或 12 月 31 日新增了閏秒。
is_steady
指定計時類型是否具「穩定性」。 在 Microsoft 的實作中, is_steady_constant
是 false
。 utc_clock
由於 不穩定,因此您無法可靠地使用此時鐘在事件之前、事件之後的時間,並減去它們以取得事件的持續時間,因為時鐘可能會在該時間期間調整。
static const bool is_steady = false;
now
傳回目前 UTC 時間的靜態方法。 傳回的時間包括閏秒。
static time_point now() noexcept;
傳回值
time_point
表示目前時間的物件。 傳回的時間點實際上是 from_sys(system_clock::now())
。
另請參閱
<chrono>
file_clock class
gps_clock class
high_resolution_clock
local_t
結構
steady_clock
結構
system_clock
結構
tai_clock
類別
標頭檔參考