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

履歴 編集

class
<chrono>

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

namespace std::chrono {
  class time_zone;
}

概要

time_zoneは、指定した地理領域の全てのタイムゾーン遷移を表すクラスである。

地域間には時差があるため、地球上の各地域に「タイムゾーン (時間帯)」が割り振られ、標準時であるUTCタイムゾーンからの時差が定義される。

このクラスは、UTCタイムゾーンから特定のタイムゾーン、およびその逆の時間変換を行う。

タイムゾーン付きの時間点としてzoned_timeクラスが定義されているため、基本的にはそちらを使うことを推奨する。

メンバ関数

構築/コピー/破棄

名前 説明 対応バージョン
time_zone(time_zone&&) = default;
time_zone() = delete;
time_zone(const time_zone&) = delete;
コンストラクタ C++20
time_zone& operator=(time_zone&&) = default;
time_zone& operator=(const time_zone&) = delete;
代入演算子 C++20

ここに記載されていない追加のコンストラクタは未規定である。ユーザーがこのクラスのオブジェクトを構築することはできず、タイムゾーンデータベースtzdbが構築を行う。

観測

名前 説明 対応バージョン
name タイムゾーン名を取得する C++20
get_info タイムゾーンの情報を取得する C++20

変換

名前 説明 対応バージョン
to_sys ローカル時間からシステム時間に変換する C++20
to_local システム時間からローカル時間に変換する C++20

非メンバ関数

比較演算

名前 説明 対応バージョン
operator== 等値比較を行う C++20
bool operator!=(const time_zone&, const time_zone&) noexcept; 非等値比較を行う (==により使用可能) C++20
operator<=> 三方比較を行う C++20
bool operator<(const time_zone&, const time_zone&) noexcept; 左辺が右辺より小さいかを判定する (<=>により使用可能) C++20
bool operator<=(const time_zone&, const time_zone&) noexcept; 左辺が右辺以下を判定する (<=>により使用可能) C++20
bool operator>(const time_zone&, const time_zone&) noexcept; 左辺が右辺より大きいかを判定する (<=>により使用可能) C++20
bool operator>=(const time_zone&, const time_zone&) noexcept; 左辺が右辺以上を判定する (<=>により使用可能) C++20

#include <iostream>
#include <chrono>

namespace chrono = std::chrono;

int main()
{
  // システム時間 (UTCタイムゾーン) を日本のローカル時間 (UTC + 9時間) に変換する
  auto utc_now = chrono::system_clock::now();

  const chrono::time_zone* tz = chrono::locate_zone("Asia/Tokyo");
  chrono::local_time jst_now = tz->to_local(utc_now);

  std::cout << utc_now << std::endl;
  std::cout << jst_now << std::endl;
}

出力例

2019-10-24 11:15:10
2019-10-24 20:15:10

バージョン

言語

  • C++20

処理系

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