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_clock 的 time_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_constant
是 false
。 由于 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
类
头文件引用