utc_clock
类
协调世界时 (UTC)(有时称为格林威治标准时间 (GMT) 或 Zulu 时间)时钟。 根据时区,按照 UTC 时间调整本地时间。
语法
class utc_clock; // C++20
备注
此时钟测量自 1970 年 1 月 1 日(星期四)00:00:00 以来的时间。 此时钟考虑到了闰秒,是世界各地的民用时间的基础。
UTC 时间速率基于国际原子时 (TAI),后者使用原子钟跟踪时间。 但是,偶尔会向 UTC 时间加一个闰秒,使 UTC 时间与 UT1(太阳时)之间的差异保持在 +- 0.9 秒的范围内。
原子钟获得的时间与跟踪地球旋转所获得的时间之间存在差异。 这是因为地球的旋转速度不规律,通常以每 1.5 年大约一秒的速度减慢(不过有时地球的旋转速度会提高)。 闰秒调整使 UTC 跟踪时间保持在每天(平均时长)一秒内。
到本文撰写时为止,自 1972 年开始实施插入闰秒的做法以来,已增加了 27 闰秒。 国际地球自转和参考系统服务 (IERS) 决定何时增加闰秒。 增加闰秒称为“闰秒插入”。 如果插入闰秒,则时间在接近午夜时会从 23 小时 59 分 59 秒跳到 23 小时 59 分 60 秒(插入的闰秒),然后跳到 0 小时 0 分 0 秒(午夜)。 从历史上看,在 6 月 30 日或 12 月 31 日增加过闰秒。
根据定义,UTC 时间在开始时落后于 TAI(原子时间)10 秒。 1972 年为 TAI 时间增加了 10 秒,以计入在该时间点累积的闰秒。 鉴于自那时以来又插入了 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 |
用于表示此时钟的 utc_clock::duration 中的整数单位的类型 (long long ) 的同义词。 |
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>; 的同义词;表示 utc_clock 的 time_point 。 指定持续时间。 在 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 秒(午夜)。 过去在 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
类
头文件引用