namespace std::chrono {
struct tzdb;
}
概要
tzdb
は、タイムゾーンデータベースの情報にアクセスするためのクラスである。
タイムゾーンデータベースは、RFC 6557においてIANA Time Zone databaseとして説明される。このクラスは、UTCタイムゾーンをもつシステム時間と、ユーザー指定のタイムゾーンをもつローカル時間の間の変換において使用される。
このクラス内の各リストオブジェクトは、高速に検索ができるようソートされる。
タイムゾーンデータベースは、std::chrono::get_tzdb()
関数を使用することでこのクラスのオブジェクトとして取得できる。
メンバ関数
名前 | 説明 | 対応バージョン |
---|---|---|
locate_zone |
指定した名前のタイムゾーンを取得する | C++20 |
current_zone |
現在のタイムゾーンを取得する | C++20 |
メンバ変数
名前 | 説明 | 対応バージョン |
---|---|---|
string version; |
タイムゾーンデータベースのバージョン文字列 | C++20 |
vector<time_zone> zones; |
タイムゾーンデータベースが保持するタイムゾーンのリスト | C++20 |
vector<time_zone_link> links; |
タイムゾーンデータベースが保持するタイムゾーンリンクのリスト | C++20 |
vector<leap_second> leap_seconds; |
タイムゾーンデータベースが保持するうるう秒のリスト | C++20 |
例
#include <iostream>
#include <chrono>
namespace chrono = std::chrono;
int main()
{
auto utc_now = chrono::system_clock::now();
// 日本のタイムゾーン (UTC + 9時間)
const chrono::tzdb& tzdb = chrono::get_tzdb();
const chrono::time_zone* tz = tzdb.locate_zone("Asia/Tokyo");
// UTCから日本のタイムゾーンに変換
chrono::local_time jst_now = tz->to_local(utc_now);
std::cout << utc_now << std::endl;
std::cout << jst_now << std::endl;
}
20
#include <iostream>
#include <chrono>
namespace chrono = std::chrono;
int main()
{
auto utc_now = chrono::system_clock::now();
// 日本のタイムゾーン (UTC + 9時間)
const chrono::tzdb& tzdb = chrono::get_tzdb();
const chrono::time_zone* tz = tzdb.locate_zone("Asia/Tokyo");
// UTCから日本のタイムゾーンに変換
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 ❌