Skip to content

Latest commit

 

History

History
92 lines (77 loc) · 2.88 KB

File metadata and controls

92 lines (77 loc) · 2.88 KB

from_utc

  • chrono[meta header]
  • std::chrono[meta namespace]
  • tai_clock[meta class]
  • function[meta id-type]
  • cpp20[meta cpp]
template <class Duration>
static tai_time<common_type_t<Duration, seconds>>
  from_utc(const utc_time<Duration>&) noexcept;
  • tai_time[link /reference/chrono/tai_time.md]
  • utc_time[link /reference/chrono/utc_time.md]
  • common_type_t[link /reference/chrono/common_type.md]

概要

UTC時間からTAI時間に変換する。

戻り値

return tai_time<common_type_t<Duration, seconds>>{t.time_since_epoch()} + 378691210s;
  • tai_time[link /reference/chrono/tai_time.md]
  • common_type_t[link /reference/chrono/common_type.md]
  • t.time_since_epoch()[link /reference/chrono/time_point/time_since_epoch.md]
  • 378691210s[link /reference/chrono/duration/op_s.md]

ここで378691210は、システム時間のエポック1970年1月1日とTAI時間のエポック1958年1月1日との差である秒数に、TAI時間がUTC時間より10秒進んでいるという差を加算した秒数である。

378691210s == sys_days{1970y/January/1} - sys_days{1958y/January/1} + 10s
  • 378691210s[link /reference/chrono/duration/op_s.md]
  • 10s[link /reference/chrono/duration/op_s.md]
  • sys_days[link /reference/chrono/sys_time.md]
  • 1970y[link /reference/chrono/year/op_y.md]
  • 1958y[link /reference/chrono/year/op_y.md]
  • January[link /reference/chrono/month_constants.md]

#include <iostream>
#include <chrono>

namespace chrono = std::chrono;
using namespace std::chrono_literals;

int main()
{
  // ここでは日単位のシステム時間を、utc_clockを経由して、日単位のTAI時間に変換している。
  // 秒単位の時間を渡せば、秒単位のTAI時間が返る
  auto st = chrono::sys_days{2019y/10/24};
  auto ut = chrono::utc_clock::from_sys(st);
  auto tt = chrono::tai_clock::from_utc(ut); // 日単位のTAI時間が返る

  // うるう秒
  chrono::leap_second_info info = chrono::get_leap_second_info(ut);

  std::cout << st << std::endl;
  std::cout << ut << std::endl;
  std::cout << tt << std::endl;
  std::cout << info.elapsed.count() << std::endl;
}
  • from_utc[color ff0000]
  • 2019y[link /reference/chrono/year/op_y.md]
  • chrono::sys_days[link /reference/chrono/sys_time.md]
  • chrono::utc_clock[link /reference/chrono/utc_clock.md]
  • from_sys[link /reference/chrono/utc_clock/from_sys.md]
  • chrono::get_leap_second_info[link /reference/chrono/get_leap_second_info.md]
  • chrono::leap_second_info[link /reference/chrono/leap_second_info.md]
  • count()[link /reference/chrono/duration/count.md]

出力

2019-10-24
2019-10-24 00:00:00
2019-10-24 00:00:37
27

バージョン

言語

  • C++20

処理系

  • Clang: 9.0 [mark noimpl]
  • GCC: 9.2 [mark noimpl], 15.1 [mark verified]
  • Visual C++: 2019 Update 3 [mark noimpl]