Klasa time_zone

A time_zone reprezentuje strefę czasową dla określonego obszaru geograficznego. Zawiera pełną historię reguł strefy czasowej dla każdego obszaru, więc konwersje czasu będą dokładne, jeśli konwertujesz godzinę daty z powrotem, gdy reguły są inne dla strefy czasowej niż obecnie.

Składnia

class time_zone;  // Since C++20

Uwagi

Biblioteka <chrono> tworzy time_zone obiekty w ramach inicjowania bazy danych strefy czasowej. Zapewnia const dostęp do utworzonych obiektów.

Nie można skonstruować ani skopiować time_zone obiektu, a użycie domyślnego konstruktora przenoszenia lub domyślnego operatora przypisania przenoszenia powoduje niezdefiniowane zachowanie.

W ten sposób uzyskujesz time_zone wystąpienie:

const auto& timeZoneDatabase = get_tzdb(); // initialize the time zone database
const auto& currentZone = timeZoneDatabase.current_zone();

Język Microsoft C++ obsługuje klasę rozpoczynającą time_zone się w programie Visual Studio 2019 w wersji 16.10. Klasa time_zone jest funkcją języka C++20. Wymagana jest opcja kompilatora /std:c++latest .

Członkowie

Publiczne funkcje składowe i szablony funkcji

Nazwa/nazwisko opis
get_info Pobiera element sys_info lub local_info dla tego time_zoneelementu .
name Pobiera nazwę tego elementu time_zone.
to_local Konwertuje element sys_time na element local_time w tym time_zoneobiekcie .
to_sys Konwertuje element local_time na element sys_time w tym time_zoneobiekcie .

Wymagania

Nagłówka:<chrono>

Dane strefy czasowej są dostępne tylko dla systemu Windows 10 w wersji 1903/19H1 i nowszych oraz systemu Windows Server 2022 i nowszych.

Obszaru nazw:std::chrono

get_info

Szablon get_info funkcji ma dwa przeciążenia, które pobierają element sys_info lub local_info dla tego elementu time_zone.

template<class Duration>
sys_info get_info(const sys_time<Duration>& st) const;  // Since C++20
    
template<class Duration>
local_info get_info(const local_time<Duration>& lt) const;  // Since C++20

Parametry

Duration
Klasa duration dla parametru sys_time or local_time .

st
Punkt sys_time czasu używany do uzyskania sys_info wyniku.

lt
Punkt local_time czasu używany do uzyskania local_info wyniku.

Wartość zwracana

W szablonie get_info funkcji, który zajmuje sys_time punkt stczasu, zwraca sys_info obiekt i taki, który st znajduje się w zakresie [i.begin, i.end).

W szablonie get_info funkcji, który zajmuje local_time punkt ltczasu, zwraca local_info obiekt.

Uwagi

Program Microsoft C++ obsługuje time_zone::get_info uruchamianie w programie Visual Studio 2019 w wersji 16.10. Funkcja jest funkcją języka C++20, która wymaga opcji kompilatora /std:c++latest .

name

Pobiera nazwę tego elementu time_zone.

string_view name() const noexcept;  // Since C++20

Wartość zwracana

Zwraca nazwę strefy czasowej jako string_view.

Uwagi

Program Microsoft C++ obsługuje time_zone::name uruchamianie w programie Visual Studio 2019 w wersji 16.10.

to_local

Szablon funkcji konwertuje sys_time element to_local na element local_time w tym time_zoneobiekcie .

template<class Duration>
local_time<common_type_t<Duration, seconds>>
to_local(const sys_time<Duration>& st) const;  // Since C++20

Parametry

Duration
Klasa duration dla parametru sys_time or local_time .

st
Punkt sys_time czasu używany do uzyskania sys_info wyniku.

Wartość zwracana

to_local Zwraca wartość local_time skojarzona z elementem st w tym time_zoneobiekcie .

Uwagi

Program Microsoft C++ obsługuje time_zone::to_local uruchamianie w programie Visual Studio 2019 w wersji 16.10. Funkcja jest funkcją języka C++20, która wymaga opcji kompilatora /std:c++latest .

Przykład: konwertowanie sys_time na local_time

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    const auto& timeZoneDatabase = get_tzdb();
    const auto& currentZone = timeZoneDatabase.current_zone();
    local_time<system_clock::duration> lt = currentZone->to_local(system_clock::now());

    std::cout << "local_time: " << lt << "\n";
   
    return 0;
}
local_time: 2021-09-08 15:15:53.1830646

to_sys

Szablon to_sys funkcji ma dwa przeciążenia, które konwertują local_time element na element sys_time w tym obiekcie time_zone.

template<class Duration>
sys_time<common_type_t<Duration, seconds>>
to_sys(const local_time<Duration>& lt) const;  // Since C++20

template<class Duration>
sys_time<common_type_t<Duration, seconds>>
to_sys(const local_time<Duration>& lt, choose z) const;  // Since C++20

Parametry

Duration
Klasa duration parametru local_time .

lt
local_time Punkt czasu do przekonwertowania.

z
Wartość choose::earliest lub choose::latest. Służy do rozwiązywania innych niejednoznacznych wyników.

Wartość zwracana

to_sys zwraca wartość sys_time , która jest co najmniej tak dobra, jak seconds. Jest to bardziej precyzyjne, jeśli argument lt ma dokładnszą precyzję. Zwrócony sys_time element jest odpowiednikiem lt czasu UTC zgodnie z regułami tego time_zone.

Przeciążenie jednoparametrowe zgłasza ambiguous_local_time wyjątek, jeśli konwersja z lt do elementu sys_time jest niejednoznaczna, a nonexistent_local_time wyjątek, jeśli lokalny punkt czasu reprezentuje nieistniejący lokalny punkt czasu. Niejednoznaczność może wystąpić w czasie letnim do standardowego przejścia w czasie standardowym. W ciągu jednego dnia mogą wystąpić dwa wystąpienia tego samego lokalnego punktu czasu. Nieistniejący lokalny punkt czasu reprezentuje punkt czasu przejścia z czasu standardowego do czasu letniego.

Przeciążenie dwóch parametrów nie zgłasza wyjątku w tych przypadkach. Jeśli konwersja z na wartość sys_time jest niejednoznaczna, to_sys zwraca wartość wcześniejsząsys_time, jeśli z ma choose::earliestwartość , i zwraca wartość późniejsząsys_time, jeśli z ma wartość choose::latest.lt Jeśli reprezentuje lt nieistniejący czas między dwoma punktami czasu UTC, dwa punkty czasu UTC są takie same, więc to_sys zwraca ten punkt czasu UTC.

Uwagi

Program Microsoft C++ obsługuje time_zone::to_sys uruchamianie w programie Visual Studio 2019 w wersji 16.10. Funkcja jest funkcją języka C++20, która wymaga opcji kompilatora /std:c++latest .

Przykład: konwertowanie local_time na sys_time

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    const auto& timeZoneDatabase = get_tzdb();
    const auto& currentZone = timeZoneDatabase.current_zone();

    auto st = currentZone->to_sys(local_days{2021y/September/15d}+16h+45min, choose::earliest);

    std::cout << "sys_time: " << st << "\n";
   
    return 0;
}
sys_time: 2021-09-15 23:45:00.0000000

Zobacz też

<chrono>
Odwołanie do plików nagłówka