- chrono[meta header]
- std::chrono[meta namespace]
- tzdb[meta class]
- function[meta id-type]
- cpp20[meta cpp]
namespace std::chrono {
const time_zone* locate_zone(std::string_view tz_name) const;
}- time_zone[link /reference/chrono/time_zone.md]
指定した名前のタイムゾーンを取得する。
この関数には、タイムゾーンデータベースに登録されているタイムゾーンを、「地域/地名」の形式で指定して取得する。
- タイムゾーンリストの要素である
time_zone型オブジェクトtzに対してtz.name()== tz_nameがtrueであるtzへのポインタを返す。 - そのようなオブジェクトが見つからない場合、タイムゾーンリンクの要素である
time_zone_link型オブジェクトlinkに対してlink.name()== tz_nameがtrueである要素に対して、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;
}- locate_zone[color ff0000]
- chrono::get_tzdb()[link /reference/chrono/get_tzdb.md]
- chrono::time_zone[link /reference/chrono/time_zone.md]
- name()[link /reference/chrono/time_zone/name.md]
Asia/Tokyo
America/New_York
Etc/UTC
Etc/GMT
Asia/Nicosia
- C++20
- Clang: (9.0時点で実装なし)
- GCC: (9.2時点で実装なし)
- Visual C++: (2019 Update 3時点で実装なし)