- chrono[meta header]
- std::chrono[meta namespace]
- gps_clock[meta class]
- function[meta id-type]
- cpp20[meta cpp]
template <class Duration>
static gps_time<common_type_t<Duration, seconds>>
from_utc(const utc_time<Duration>&) noexcept;- gps_time[link /reference/chrono/gps_time.md]
- utc_time[link /reference/chrono/utc_time.md]
- common_type_t[link /reference/chrono/common_type.md]
UTC時間からGPS時間に変換する。
return gps_time<common_type_t<Duration, seconds>>{t.time_since_epoch()} - 315964809s;- gps_time[link /reference/chrono/gps_time.md]
- common_type_t[link /reference/chrono/common_type.md]
- t.time_since_epoch()[link /reference/chrono/time_point/time_since_epoch.md]
- 315964809s[link /reference/chrono/duration/op_s.md]
ここで315964809は、システム時間のエポック1970年1月1日とGPS時間のエポック1980年1月6日 (この年の最初の日曜日) との差である秒数に、その間に挿入されたうるう秒である9秒を加算した秒数である。
315964809s == sys_days{1980y/January/Sunday[1]} - sys_days{1970y/January/1} + 9s- 315964809s[link /reference/chrono/duration/op_s.md]
- 9s[link /reference/chrono/duration/op_s.md]
- sys_days[link /reference/chrono/sys_time.md]
- 1970y[link /reference/chrono/year/op_y.md]
- 1980y[link /reference/chrono/year/op_y.md]
- January[link /reference/chrono/month_constants.md]
- Sunday[link /reference/chrono/weekday_constants.md]
#include <iostream>
#include <chrono>
namespace chrono = std::chrono;
using namespace std::chrono_literals;
int main()
{
// ここでは日単位のシステム時間を、utc_clockを経由して、日単位のGPS時間に変換している。
// 秒単位の時間を渡せば、秒単位のGPS時間が返る
auto st = chrono::sys_days{2019y/10/24};
auto ut = chrono::utc_clock::from_sys(st);
auto tt = chrono::gps_clock::from_utc(ut); // 日単位のGPS時間が返る
// うるう秒
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 00:00:00
2019-10-24 00:00:00 UTC
2019-10-24 00:00:27 GPS
27
- C++20
- Clang: (9.0時点で実装なし)
- GCC: (9.2時点で実装なし)
- Visual C++: (2019 Update 3時点で実装なし)