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

履歴 編集

class
<chrono>

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

namespace std::chrono {
  class tzdb_list;
}

概要

tzdb_listは、タイムゾーンデータベースのリストであり、要素として読み取り専用のタイムゾーンデータベースtzdbのオブジェクトをもつ。

このクラスのオブジェクトは、get_tzdb_list()関数を使用することでシングルトンとして参照できる。

このクラスのオブジェクトは、長期間動かすプログラムにおいて、プログラム実行中にタイムゾーンデータベースが更新されるような状況のためにある。IANAのタイムゾーンデータベースは、毎月もしくは季節ごとに更新される。reload_tzdb()関数を呼び出すことで、このクラスのオブジェクトの先頭要素として最新のタイムゾーンデータベースが挿入され、古いタイムゾーンデータベースは後方に移動するようになっている。

get_tzdb()関数、locate_zone()関数、current_zone()では、このクラスの先頭要素である最新のタイムゾーンデータベースを参照するが、更新前の古いタイムゾーンデータベースを参照したい場合には、このクラスがもつイテレータを介することでそのようなタイムゾーンデータベースにアクセスできる。

備考

  • このリストが最大および少なくとも何要素を保持できるかは未規定
  • reload_tzdb()関数によって、新しいバージョンがあったらこのリストに要素が追加されるが、リストに要素を追加するためのメンバ関数は未規定

メンバ関数

構築/コピー/破棄

名前 説明 対応バージョン
tzdb_list() = delete;
tzdb_list(const tzdb_list&) = delete;
tzdb_list(tzdb_list&&) = delete;
その他未規定の追加コンストラクタがある
コンストラクタ C++20
tzdb_list& operator=(const tzdb_list&) = delete;
tzdb_list& operator=(tzdb_list&&) = delete;
代入演算子 C++20

要素アクセス

名前 説明 対応バージョン
front 先頭要素を取得する C++20

リストの変更

名前 説明 対応バージョン
erase_after 指定したイテレータの次の要素を削除する C++20

イテレータ

名前 説明 対応バージョン
begin 先頭要素を指すイテレータを取得する C++20
end 末尾の次を指すイテレータを取得する C++20
cbegin 先頭要素を指す読み取り専用イテレータを取得する C++20
cend 末尾の次を指す読み取り専用イテレータを取得する C++20

メンバ型

名前 説明 対応バージョン
const_iterator ForwardIterator要件を満たすイテレータ型 C++20

#include <iostream>
#include <chrono>

namespace chrono = std::chrono;

int main()
{
  const chrono::tzdb& tzdb = chrono::get_tzdb_list().front();
  const chrono::time_zone* tz = tzdb.locate_zone("Asia/Tokyo");
  std::cout << tz->name() << std::endl;
}

出力例

Asia/Tokyo

バージョン

言語

  • C++20

処理系

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