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

履歴 編集

class
<chrono>

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

namespace std::chrono {
  template <class T> struct zoned_traits {}; // (1) C++20

  template <>
  struct zoned_traits<const time_zone*>;     // (2) C++20
}

概要

zoned_traitsは、zoned_time<Duration, TimeZonePtr>クラスのデフォルトコンストラクタ、およびstring_viewをとるコンストラクタのための、タイムゾーン取得を動作をカスタマイズする中間インタフェースクラスである。

標準ではtime_zoneクラスに対する特殊化が定義されるが、ユーザーが任意のタイムゾーンクラスを定義する場合は、このクラスを特殊化することで、zoned_time<Duration, TimeZonePtr>クラスでそのタイムゾーンクラスを扱えるようになる。

静的メンバ関数

名前 説明 対応バージョン
default_zone デフォルトのタイムゾーンを取得する C++20
locate_zone タイムゾーン名を指定してタイムゾーンを取得する C++20

#include <cassert>
#include <chrono>

namespace chrono = std::chrono;

int main()
{
  auto now = chrono::system_clock::now();

  // zoned_traits<const time_zone*>::default_zone()で取得したタイムゾーンが使用される
  chrono::zoned_time zt1{};
  assert(zt1.get_time_zone() == chrono::locate_zone("UTC"));

  // zoned_traits<const time_zone*>::locate_zone()で取得したタイムゾーンが使用される
  chrono::zoned_time zt2{"Asia/Tokyo", now};
  assert(zt2.get_time_zone() == chrono::locate_zone("Asia/Tokyo"));
}

出力

バージョン

言語

  • C++20

処理系

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