最終更新日時: 2025年10月20日 15時51分40秒 (JST)
Raclamusi が更新

履歴 編集

class
<chrono>

# std::chrono::utc_clock(C++20)

    namespace std::chrono {
      class utc_clock;
    }

## 概要

`utc_clock`は、UTC時間 (協定世界時、Coordinated Universal Time) を表現するためのクロックである。

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

### エポック

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

`utc_clock`のエポックは、1970年1月1日0時0分0秒である。

### うるう秒の扱い

このクロックは、うるう秒をカウントする。

`system_clock`とその時間点`sys_time`は、うるう秒をカウントしない。

## メンバ関数

### 静的メンバ関数

名前 | 説明 | 対応バージョン
--- | --- | ---
`now` | 現在日時を取得する | C++20
`to_sys` | UTC時間からシステム時間へ変換する | C++20
`from_sys` | システム時間からUTC時間へ変換する | C++20

## メンバ型

名前 | 説明 | 対応バージョン
--- | --- | ---
`rep` | 時間間隔の内部表現となる符号付き算術型。具体的な型は未規定 | C++20
`period` | 時間の周期を表す`ratio`型 `ratio<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::utc_clock::time_point tp = chrono::utc_clock::now();
      std::cout << tp << std::endl;
    }

### 出力例

    2019-10-24 11:15:10

## バージョン

### 言語

- C++20

### 処理系

- Clang: 9.0 ❌
- GCC: 9.2 ❌, 15.1 ✅
- Visual C++: 2019 Update 3 ❌

## 参照

- 協定世界時 - Wikipedia