Поделиться через


Структура tzdb

Представляет копию базы данных часового пояса.

Синтаксис

struct tzdb; // C++20

Замечания

Представляет копию базы данных часового пояса IANA (центр назначения номеров Интернета). База данных содержит сведения о каждом часовом поясе и его журнале корректировки локального времени. Дополнительные сведения о базе данных см. в разделе "База данных часовых поясов".

Участники

Элемент Description
leap_seconds Отсортированный vector<leap_second>. Предоставляет leap_second историю того, когда в прошлом были добавлены високосные секунды.
links Отсортированный vector<time_zone_link>. Time_zone_link предоставляет альтернативное имя для заданного часового пояса.
version Содержит std::string версию базы данных.
zones Отсортированный vector<time_zone>. Имеет time_zone полную историю правил часового пояса для определенной области.

Пример использования этих элементов см. в разделе "Пример" zonesleap_secondslinks в конце этого раздела.

Функции элементов

Имя Описание
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
Справочник по файлам заголовков