Aracılığıyla paylaş


tzdb Yapı

Saat dilimi veritabanının bir kopyasını temsil eder.

Sözdizimi

struct tzdb; // C++20

Açıklamalar

IANA (İnternet Atanmış Numaralar Yetkilisi) saat dilimi veritabanının bir kopyasını temsil eder. Veritabanı, her saat dilimi ve yerel saat ayarlamalarının geçmişi hakkında bilgi içerir. Veritabanı hakkında daha fazla bilgi için bkz . Saat Dilimi Veritabanı.

Üyeler

Üye Açıklama
leap_seconds Sıralanmış vector<leap_second>bir . A leap_second , artık saniyelerin geçmişte ne zaman eklendiğine ilişkin bir geçmiş sağlar.
links Sıralanmış vector<time_zone_link>bir . time_zone_link belirli bir saat dilimi için alternatif ad sağlar.
version std::string Veritabanı sürümünü içeren.
zones Sıralanmış vector<time_zone>bir . , time_zone belirli bir alan için saat dilimi kurallarının tam geçmişine sahiptir.

Bu üyelerin nasıl kullanılacağına ilişkin bir örnek için, bu konunun sonundaki Örnek: leap_seconds, links, zones bölümüne bakın.

Üye işlevleri

Veri Akışı Adı Açıklama
current_zone Yerel saat dilimini alır.
locate_zone Belirtilen saat dilimini alır.

current_zone

Bilgisayarın yerel saat dilimini alır.

time_zone* current_zone() const; // C++20

Dönüş değeri

time_zone Bilgisayarın yerel saat dilimini temsil eden işaretçi.

Örnek: current_zone

Bu örnekte geçerli saat dilimini alma gösterilmektedir.

// 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

Belirtilen saat dilimini alır.

const time_zone* locate_zone(string_view name) const;

Örnek: locate_zone

Bu örnekte ada göre saat dilimi alma gösterilmektedir.

// 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

Bu örnek, çeşitli tzdb veri üyelerini kullanmayı gösterir.

// 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
...

Gereksinimler

Üstbilgi: <chrono>

Ad alanı: std::chrono

Derleyici Seçeneği: /std:c++latest

Ayrıca bkz.

<chrono>
tzdb_list
time_zone_link
Üst Bilgi Dosyaları Başvurusu