namespace std::chrono {
const time_zone* locate_zone(std::string_view tz_name);
}
概要
指定した名前のタイムゾーンを取得する。
この関数には、タイムゾーンデータベースに登録されているタイムゾーンを、「地域/地名」の形式で指定して取得する。
戻り値
return get_tzdb().locate_zone(tz_name);
例外
該当する名前のタイムゾーンが見つからない場合、std::runtime_error
例外を送出する
備考
- この関数は例外を送出する状況以外では、常に有効な
time_zone
オブジェクトへのポインタを返す
例
#include <iostream>
#include <chrono>
namespace chrono = std::chrono;
int main()
{
// 日本のタイムゾーン (UTC + 9時間)
const chrono::time_zone* tz = chrono::locate_zone("Asia/Tokyo");
std::cout << tz->name() << std::endl;
// アメリカのタイムゾーン。
// 地名内のスペースは、アンダースコアに変換されている
std::cout << chrono::locate_zone("America/New_York")->name() << std::endl;
// 標準時のタイムゾーン。
// 正式なタイムゾーン名は "Etc/UTC" と "Etc/GMT" だが、
// より短い名前が (リンクとして) 定義されている
std::cout << chrono::locate_zone("UTC")->name() << std::endl;
std::cout << chrono::locate_zone("GMT")->name() << std::endl;
// キプロス共和国の首都ニコシアはアジアに属するが、
// 多くのユーザーはヨーロッパで見つかることを期待している。
// ニコシアは、ヨーロッパとアジアどちらでも見つかるようリンクされており、
// 現在の正式な地域だけでなく (Asia/Nicosia)、リンクされた地域も指定できる
const chrono::time_zone* linked_tz = chrono::locate_zone("Europe/Nicosia");
std::cout << linked_tz->name() << std::endl;
}
出力
Asia/Tokyo
America/New_York
Etc/UTC
Etc/GMT
Asia/Nicosia
バージョン
言語
- C++20
処理系
- Clang: 9.0 ❌
- GCC: 9.2 ❌
- Visual C++: 2019 Update 3 ❌