• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function
    <chrono>

    std::chrono::tzdb::locate_zone

    namespace std::chrono {
      const time_zone* locate_zone(std::string_view tz_name) const;
    }
    

    概要

    指定した名前のタイムゾーンを取得する。

    この関数には、タイムゾーンデータベースに登録されているタイムゾーンを、「地域/地名」の形式で指定して取得する。

    戻り値

    • タイムゾーンリストの要素であるtime_zone型オブジェクトtzに対してtz.name() == tz_nametrueであるtzへのポインタを返す。
    • そのようなオブジェクトが見つからない場合、タイムゾーンリンクの要素であるtime_zone_link型オブジェクトlinkに対してlink.name() == tz_nametrueである要素に対して、tz.name() == link.target()trueであるtzへのポインタを返す

    例外

    該当する名前のタイムゾーンが見つからない場合、std::runtime_error例外を送出する

    備考

    • この関数は例外を送出する状況以外では、常に有効なtime_zoneオブジェクトへのポインタを返す

    #include <iostream>
    #include <chrono>
    
    namespace chrono = std::chrono;
    
    int main()
    {
      const chrono::tzdb& tzdb = chrono::get_tzdb();
      // 日本のタイムゾーン (UTC + 9時間)
      const chrono::time_zone* tz = tzdb.locate_zone("Asia/Tokyo");
      std::cout << tz->name() << std::endl;
    
      // アメリカのタイムゾーン。
      // 地名内のスペースは、アンダースコアに変換されている
      std::cout << tzdb.locate_zone("America/New_York")->name() << std::endl;
    
      // 標準時のタイムゾーン。
      // 正式なタイムゾーン名は "Etc/UTC" と "Etc/GMT" だが、
      // より短い名前が (リンクとして) 定義されている
      std::cout << tzdb.locate_zone("UTC")->name() << std::endl;
      std::cout << tzdb.locate_zone("GMT")->name() << std::endl;
    
      // キプロス共和国の首都ニコシアはアジアに属するが、
      // 多くのユーザーはヨーロッパで見つかることを期待している。
      // ニコシアは、ヨーロッパとアジアどちらでも見つかるようリンクされており、
      // 現在の正式な地域だけでなく (Asia/Nicosia)、リンクされた地域も指定できる
      const chrono::time_zone* linked_tz = tzdb.locate_zone("Europe/Nicosia");
      std::cout << linked_tz->name() << std::endl;
    }
    

    出力

    Asia/Tokyo
    America/New_York
    Etc/UTC
    Etc/GMT
    Asia/Nicosia
    

    バージョン

    言語

    • C++20

    処理系

    参照