共用方式為


tzdb 結構

表示時區資料庫的複本。

語法

struct tzdb; // C++20

備註

代表 IANA(因特網指派號碼授權單位)時區資料庫的複本。 資料庫包含每個時區及其當地時間調整歷程記錄的相關信息。 如需資料庫的詳細資訊,請參閱 時區資料庫

成員

member 描述
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
標頭檔參考