Udostępnij za pośrednictwem


local_info Struct

Udostępnia interfejs niskiego poziomu do informacji o strefie czasowej o wyniku konwersji obiektu local_time na sys_time.

Składnia

struct local_info;

Elementy członkowskie

Function opis
result Kod opisujący wynik konwersji.
first, second Wynik konwersji.

Stałe składowe

Nazwa/nazwisko Wartość Opis
unique 0 Wynik konwersji jest unikatowy.
nonexistent 1 Nie ma odpowiedniego sys_time elementu, aby przekonwertować element na local_time .
ambiguous 2 Wynik konwersji jest niejednoznaczny.

Inne niż elementy członkowskie

Function opis
operator<< local_info Wyprowadzanie elementu do strumienia.

result

Wynik konwersji obiektu local_time na .sys_time

int result;

Wartość zwracana

Wynik może być jedną z następujących wartości:

  • unique: Element local_time został pomyślnie przekonwertowany na .sys_time
  • nonexistent: nie ma mapowania z elementu local_time sys_timena .
  • ambiguous: Ląduje local_time podczas przejścia między czasem letnim a czasem standardowym i tak można przekonwertować na dwie sys_time wartości.

Uwagi

Aby uzyskać informacje na temat sposobu ustawiania i second ustawiania na resultpodstawie elementu , zobacz następującą sekcję ofirst systemie . secondfirst

first, second

Zapewnia wynik konwersji obiektu local_time na .sys_time

sys_seconds begin;
sys_seconds end;

Wartość zwracana

first i second są ustawione w następujący result sposób:

result first second
unique Zawiera wartość local_time przekonwertowaną na sys_time zainicjowane zero
nonexistent Element sys_info , który kończy się tuż przed local_time Element sys_info rozpoczynający się tuż po .local_time
ambiguous Element sys_info , który kończy się tuż po local_time Element sys_info rozpoczynający się tuż przed elementem local_time.

ambiguous kod wyniku

Podczas przejścia od czasu letniego do czasu standardowego jesienią zegary zasadniczo zyskują dodatkową godzinę. Może to być mylące, ponieważ nie przejście do czasu standardowego oznacza utratę godziny? Spadając co godzinę, godzina przed przejściem będzie powtarzana po zegarze dostosowuje się do standardowego czasu. Rozważ zmianę czasu standardowego w Nowym Jorku, która ma miejsce w pierwszą niedzielę w listopadzie o godzinie 2:00. Po pierwsze, 1:00 idzie dalej. O 2 rano zegar przechodzi do czasu standardowego, więc teraz znowu jest 1:00. Oznacza to, że czas między 1 rano a 2 rano będzie "powtarzany", skutecznie dodając godzinę. Zobacz ambiguous_local_time przykład.

Jeśli parametr local_time określa czas w tej "dodatkowej" godzinie, nie jest jasne, jak go przekonwertować. Czy przekonwertowany czas powinien być traktowany jako "pierwszy" czas, który się dzieje, czy "drugi"? Jeśli wyliczenie choose nie zostanie określone, aby wskazać, które powinno być, należy result je ustawić ambiguousna , i first second będzie odzwierciedlać dwie opcje dotyczące czasu local_time , na który można przekonwertować.

nonexistent kod wyniku

W okresie przejściowym od czasu standardowego do czasu letniego wiosną zegary zasadniczo tracą godzinę. Może to być mylące, ponieważ nie przejście do czasu letniego oznacza dodanie godziny? Przez "wiosnę do przodu" godzinę, godzina po przejściu zostanie skutecznie usunięta. Rozważ zmianę czasu letniego w Nowym Jorku, która ma miejsce w drugą niedzielę w marcu o 2 rano. O godzinie 2:00 zegar przechodzi do czasu letniego, a teraz odczytuje 3:00. local_time Jeśli przekonwertowana wartość to 2:30, na przykład czas ten przypada w okresie "usuniętym", więc można oczekiwaćresult, że nonexistent kod zostanie wyświetlony. Zobacz nonexistent_local_time przykład.

Przykład: uzyskiwanie local_info

// 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());

    auto localInfo = currentZone->get_info(lt);

    std::cout << "local_time: " << lt << "\n";
    std::cout << localInfo << "\n";

    return 0;
}
local_time: 2021-09-08 15:37:57.6853963
result: unique, first: (begin: 2021-03-14 10:00:00, end: 2021-11-07 09:00:00, offset: -25200s, save: 60min, abbrev: PDT)

Wymagania

Nagłówek: <chrono>

Przestrzeń nazw: std::chrono

Opcja kompilatora: /std:c++latest

<chrono>
ambiguous_local_time wyjątek
choose wyliczenie
Klasa file_clock
high_resolution_clock
local_t Struct
non_existent wyjątek
system_clock Struct
Klasa tai_clock
Klasa utc_clock
Odwołanie do plików nagłówka