次の方法で共有


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_secondslinkszones を参照してください。

メンバー関数

名前 説明
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

この例では、さまざまな 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

関連項目

<chrono>
tzdb_list
time_zone_link
ヘッダー ファイル リファレンス