template <class Duration>
static utc_time<common_type_t<Duration, seconds>>
to_utc(const tai_time<Duration>& t) noexcept;
概要
TAI時間からUTC時間に変換する。
戻り値
return utc_time<common_type_t<Duration, seconds>>{t.time_since_epoch()} - 378691210s;
ここで378691210
は、システム時間のエポック1970年1月1日とTAI時間のエポック1958年1月1日との差である秒数に、TAI時間がUTC時間より10秒進んでいるという差を加算した秒数である。
例
#include <iostream>
#include <chrono>
namespace chrono = std::chrono;
using namespace std::chrono_literals;
int main()
{
auto tt = chrono::clock_cast<chrono::tai_clock>(chrono::sys_days{2019y/10/24});
auto ut = chrono::tai_clock::to_utc(tt);
// うるう秒
chrono::leap_second_info info = chrono::get_leap_second_info(ut);
std::cout << tt << std::endl;
std::cout << ut << std::endl;
std::cout << info.elapsed.count() << std::endl;
}
出力
2019-10-24 00:00:37 TAI
2019-10-24 00:00:00 UTC
27
バージョン
言語
- C++20
処理系
- Clang: 9.0 ❌
- GCC: 9.2 ❌
- Visual C++: 2019 Update 3 ❌