tai_clock

此时钟报告从 1958 年 1 月 1 日星期四 00:00:00 开始的国际原子时。 此时钟不考虑闰秒。

语法

class tai_clock; // C++20

备注

此时钟报告国际原子时(TAI,来自法语 temps atomique international)。 国际原子时通过多台原子钟的加权平均值来跟踪时间。

TAI 时钟的时间与 UTC 时间不同。 不同之处在于,有时会在 UTC 时间加一个闰秒,使 UTC 时间与 UT1(太阳时)之间的差异保持在 +- 0.9 秒内。 原子钟所计时间与测量地球自转所计时间之间会逐渐产生差异。 由于地球的自转速度不规律,因此会产生差异。 随着时间的推移,它每隔 1.5 年就会减慢约一秒,但有时也会加快。 TAI 时间不会跟踪此差异。 截至目前,TAI 时间比 UTC 时间早 37 秒。 这是因为在 1972 年开始时有 10 秒的初始差异,再加上 1972 年以来插入的闰秒。

时钟的纪元(开始测量时间的日期和时间)为 1958-01-01 00:00:00

成员

名称 描述
from_utc 静态。 将 utc_time 转换为 tai_time
now 静态。 返回当前国际原子时。
to_utc 静态。 将 tai_time 转换为 utc_time

非成员

“属性” 描述
from_stream 使用指定格式从给定流分析 tai_clock
get_leap_second_info 获取有关提供的时间是否指定了插入一个闰秒的时间,以及 1970 年 1 月 1 日与指定持续时间之间的所有闰秒的总和的信息。
operator<< tai_time 输出到给定流。

便利类型别名

名称 描述
tai_clock::duration 在 Microsoft 的实现中,它是 duration<long long, ratio<1, 10'000'000> 的同义词。 它表示以 100 纳秒为单位测量的持续时间。
tai_clock::period 在 Microsoft 的实现中,它是 ratio<1, 10'000'000> 的同义词。 它以秒(100 纳秒)为单位表示持续时间中每个计时周期之间的时间。
tai_clock::rep 用于表示此时钟的 tai_clock::duration 中的整数单位的类型 (long long) 的同义词。
tai_clock::time_point time_point<tai_clock> 的同义词。 用于表示此时钟的 time_point

相关

名称 描述
tai_time template <class Duration> using tai_time = time_point<tai_clock, Duration> 的同义词。 表示 tai_clocktime_point。 指定 Duration。 在 std::chrono 中定义
tai_seconds using tai_seconds = tai_time<seconds> 的同义词。秒数,由与 tai_clock 关联的 time_point 表示。 在 std::chrono 中定义

公共常数

“属性” 描述
tai_clock::is_steady constant 指示时钟类型是否为稳定。 其值为 false

要求

标头: <chrono> (自C++20以来)

命名空间std::chrono

编译器选项: /std:c++latest

from_utc

utc_time 转换为 tai_time 的静态方法。

template <class Duration>
static tai_time<common_type_t<Duration, seconds>>
from_utc(const utc_time<Duration>& t) noexcept;

参数

t
要转换的 utc_time

返回值

一个 tai_time,将等效的 utc_time 表示为 t。 它的计算方法是:从 UTC 时钟纪元以来的时间,加上 378691210s,其中 378691210s == sys_days{1970y/January/1} - sys_days{1958y/January/1} + 10s

to_utc

tai_time 转换为 utc_time 的静态方法。

template<class Duration>
static utc_time<common_type_t<Duration, seconds>>
to_utc(const tai_time<Duration>& t) noexcept;

参数

t
要转换的 tai_time

返回值

一个 utc_time,将等效的 tai_time 表示为 t。 其计算公式为 utc_time<common_type_t<Duration, seconds>>{t.time_since_epoch()} - 378691210s,其中 378691210s == sys_days{1970y/January/1} - sys_days{1958y/January/1} + 10s

is_steady

指定时钟类型是否为稳定的静态值。 在 Microsoft 实现中,is_steady_constantfalse。 由于 tai_clock 不稳定,因此不能使用此时钟获取事件之前的时间、事件之后的时间,以及使它们相减以获取事件的持续时间,因为在该时间期间时钟可能会调整。

static const bool is_steady = false;

now

返回当前 TAI 时间的静态方法。

static time_point now() noexcept;

返回值

表示当前时间的 time_point 对象。 返回的时间点实际为 from_utc(utc_clock::now())

另请参阅

<chrono>
file_clock class
high_resolution_clock
local_t 结构
steady_clock 结构
system_clock 结构
utc_clock
头文件引用