tzdb
構造体
タイム ゾーン データベースのコピーを表します。
構文
struct tzdb; // C++20
解説
IANA (Internet Assigned Numbers Authority) タイム ゾーン データベースのコピーを表します。 データベースには、各タイム ゾーンとそのローカル時刻調整の履歴に関する情報が含まれています。 データベースの詳細については、「タイム ゾーン データベース」を参照してください。
メンバー
メンバー | 説明 |
---|---|
leap_seconds |
並べ替えられた vector<leap_second> 。 leap_second は、過去に、いつうるう秒が追加されたかの履歴を提供します。 |
links |
並べ替えられた vector<time_zone_link> 。 time_zone_link は、指定されたタイム ゾーンの代替名を指定します。 |
version |
データベース バージョンを含む std::string 。 |
zones |
並べ替えられた vector<time_zone> 。 time_zone には、特定の領域のタイム ゾーン ルールの完全な履歴があります。 |
これらのメンバーの使用例については、このトピックの最後の例: leap_seconds
、links
、zones
、 を参照してください。
メンバー関数
名前 | 説明 |
---|---|
current_zone |
ローカル タイム ゾーンを取得します。 |
locate_zone |
指定したタイム ゾーンを取得します。 |
current_zone
コンピューターのローカル タイム ゾーンを取得します。
time_zone* current_zone() const; // C++20
戻り値
コンピューターのローカル タイム ゾーンを表す time_zone
へのポインター。
例: current_zone
この例では、現在のタイム ゾーンを取得する方法を示します。
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
auto& db = get_tzdb();
std::cout << "Current zone: " << db.current_zone()->name();
return 0;
}
Current zone: America/Los_Angeles
locate_zone
指定したタイム ゾーンを取得します。
const time_zone* locate_zone(string_view name) const;
例: locate_zone
この例では、名前でタイム ゾーンを取得する方法を示します。
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
auto& db = get_tzdb();
std::cout << "Locate zone : " << db.locate_zone("America/New_York")->name() << "\n";
return 0;
}
Locate zone : America/New_York
例: leap_seconds, links, zones
この例では、さまざまな tzdb
データ メンバーの使用を示します。
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
std::cout << "Leap seconds:\n";
std::for_each(db.leap_seconds.begin(), db.leap_seconds.end(),
[](const leap_second& ls)
{
std::cout << ls.date() << "\n";
});
std::cout << "Links:\n";
std::for_each(db.links.begin(), db.links.end(),
[](const time_zone_link& l)
{
std::cout << "Name: " << l.name() << "\t\tTarget:" << l.target() << '\n';
});
std::cout << "\nTime Zone descriptions:\n";
std::for_each(db.zones.begin(), db.zones.end(),
[](const time_zone& z)
{
std::cout << "Zone: " << z.name() << "\n";
});
return 0;
}
Leap seconds:
1972-07-01 00:00:00
1973-01-01 00:00:00
1974-01-01 00:00:00
...
Links:
Name: ACT Target:Australia/Darwin
Name: AET Target:Australia/Sydney
Name: AGT Target:America/Buenos_Aires
Name: ART Target:Africa/Cairo
...
Time Zone descriptions:
Zone: Africa/Abidjan
Zone: Africa/Accra
Zone: Africa/Addis_Ababa
...
要件
ヘッダー: <chrono>
名前空間: std::chrono
コンパイラ オプション: /std:c++latest