Sdílet prostřednictvím


local_info Struct

Poskytuje rozhraní nízké úrovně informace o výsledku převodu local_time na sys_time.

Syntaxe

struct local_info;

Členové

Function Popis
result Kód popisující výsledek převodu.
first, second Výsledek převodu.

Konstanty členů

Jméno Hodnota Popis
unique 0 Výsledek převodu je jedinečný.
nonexistent 0 Neexistuje odpovídající sys_time převod na local_time .
ambiguous 2 Výsledek převodu je nejednoznačný.

Nečlenové

Function Popis
operator<< local_info Výstup streamu

result

Výsledek převodu na local_time .sys_time

int result;

Vrácená hodnota

Výsledkem může být jedna z následujících hodnot:

  • unique: Úspěšně local_time byla převedena na .sys_time
  • nonexistent: Není k dispozici mapování z objektu local_time sys_time.
  • ambiguous: Země local_time během přechodu mezi letním časem a standardním časem, takže lze převést na dvě sys_time hodnoty.

Poznámky

Informace o tom, jak first a jsou nastaveny na resultzákladě , naleznete v následující části ofirst , second.second

first, second

Poskytuje výsledek převodu na local_time .sys_time

sys_seconds begin;
sys_seconds end;

Vrácená hodnota

first a second jsou nastaveny takto result :

result first second
unique Obsahuje hodnotu local_time převedenou na sys_time inicializováno nulou
nonexistent Konec sys_info těsně před local_time Asys_info, který začíná hned po .local_time
ambiguous Konec sys_info těsně po local_time Asys_info, která začíná těsně před .local_time

ambiguous kód výsledku

Během přechodu z letního času na standardní čas na podzim hodiny v podstatě získávají další hodinu. To může být matoucí, protože přechod na standardní čas neznamená ztrátu hodiny? Když se vrátíte za hodinu, hodina před přechodem se bude opakovat po nastavení hodin pro standardní čas. Vezměte v úvahu změnu standardního času v New Yorku, která probíhá v první neděli v listopadu v 2:00. První, 1:00 jde. V 2:00 se hodiny přejdou na standardní čas, takže teď je to znovu 1:00. To znamená, že doba mezi 1:00 a 2:00 se bude opakovat, což efektivně přidává hodinu. Podívejte se ambiguous_local_time na příklad.

local_time Pokud určuje čas během této "extra" hodiny, není jasné, jak ho převést. Má se převedený čas považovat za první, kdy se tato hodina stane, nebo jako druhá? Pokud není zadaný výčt choose , který určuje, na který by měl být, očekává result se, že bude nastaven na ambiguousa first second bude odrážet dvě volby pro čas local_time , na který by bylo možné převést.

nonexistent kód výsledku

Během přechodu ze standardního času na letní čas na jaře hodiny v podstatě ztratí hodinu. To může být matoucí, protože přechod na letní čas neznamená přidání hodiny? Tím, že se "posune dopředu" hodina následující po přechodu, se efektivně odebere. Vezměte v úvahu změnu letního času v New Yorku, která se děje v druhé neděli v březnu v 2:00. V 2:00 se hodiny přecházejí na letní čas a nyní čte 3:00. local_time Pokud je převod 2:30,00, například tento čas je v období, které bylo odebráno, a proto můžete očekávatresult, že bude nonexistent mít kód. Podívejte se nonexistent_local_time na příklad.

Příklad: získání 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)

Požadavky

Záhlaví: <chrono>

Obor názvů: std::chrono

Možnost kompilátoru: /std:c++latest

<chrono>
ambiguous_local_time výjimka
choose výčet
Třída file_clock
high_resolution_clock
local_t Struct
non_existent výjimka
system_clock Struct
Třída tai_clock
Třída utc_clock
Referenční informace k souborům hlaviček