最終更新日時(UTC):
が更新

履歴 編集

class
<chrono>

std::chrono::gps_clock(C++20)

namespace std::chrono {
  class gps_clock;
}

概要

gps_clockは、GPS時間 (GPST) を表現するためのクロックである。この時刻系は、カーナビや携帯端末などで使用される。

このクラスのnow()静的メンバ関数は、標準ではnoexcept(false)である。実装がnoexcept(true)である保証をしない限り、このクラスはTrivialClock要件を満たさない。

エポック

クロックごとの初期時間 (内部的にカウンタがあれば値ゼロ) をエポックと呼ぶ。

gps_clockのエポックは、1980年1月16日 (この年の最初の日曜日) 0時0分0秒である。

うるう秒の扱い

このクロックではうるう秒は挿入されず、うるう秒の数だけ時間が進む。そのため、UTCにうるう秒が挿入されるたびに、UTCはGPSよりも1秒ずつずれていく。

GPS時間とTAI時間は19秒ずれていて、このずれは時間が経過しても変わらない。GPS時間のエポックが1958y/January/1、TAI時間のエポックが1980y/January/Sunday[1]であるが、1958年から1970年までのオフセットが10秒と、1970年から1980年までに挿入されたうるう秒が9秒あるためだ。

メンバ関数

静的メンバ関数

名前 説明 対応バージョン
now 現在日時を取得する C++20
to_utc GPS時間からUTC時間へ変換する C++20
from_utc UTC時間からGPS時間へ変換する C++20

メンバ型

名前 説明 対応バージョン
rep 時間間隔の内部表現となる符号付き算術型。具体的な型は未規定 C++20
period 時間の周期を表すratioratio<unspecified, unspecified> C++20
duration 時間間隔の型 duration<rep, period> C++20
time_point 時間の一点を指す型 time_point<utc_clock> C++20

メンバ定数

名前 説明 対応バージョン
static constexpr bool is_steady 逆行しないクロックかどうかを表すbool値。値は未規定 C++20

#include <iostream>
#include <chrono>

namespace chrono = std::chrono;

int main()
{
  chrono::gps_clock::time_point tp = chrono::gps_clock::now();
  std::cout << tp << std::endl;
}

出力例

2019-10-24 11:15:37 GPS

バージョン

言語

  • C++20

処理系

  • Clang: (9.0時点で実装なし)
  • GCC: (9.2時点で実装なし)
  • Visual C++: (2019 Update 3時点で実装なし)

参照