Struct local_info

Fornisce un'interfaccia di basso livello alle informazioni sul fuso orario sul risultato della conversione di un local_time oggetto in un oggetto sys_time.

Sintassi

struct local_info;

Membri

Funzione Descrizione
result Codice che descrive il risultato della conversione.
first, second Risultato della conversione.

Costanti membro

Nome valore Descrizione
unique 0 Il risultato della conversione è univoco.
nonexistent 1 Non esiste un oggetto corrispondente sys_time in cui convertire .local_time
ambiguous 2 Il risultato della conversione è ambiguo.

Membri non membri

Funzione Descrizione
operator<< Restituire un oggetto local_info a un flusso.

result

Risultato della conversione di un oggetto local_time in un oggetto sys_time.

int result;

Valore restituito

Il risultato può essere uno dei valori seguenti:

  • unique: l'oggetto local_time è stato convertito correttamente in un oggetto sys_time.
  • nonexistent: non esiste un mapping da local_time a sys_time.
  • ambiguous: le local_time terre durante una transizione tra l'ora legale e l'ora solare e quindi possono essere convertite in due sys_time valori.

Osservazioni:

Per informazioni su come first e second vengono impostati in resultbase a , vedere la sezione seguente su first, second.

first, second

Fornisce il risultato della conversione di un oggetto local_time in un oggetto sys_time.

sys_seconds begin;
sys_seconds end;

Valore restituito

first e second sono impostati in base ai result seguenti:

result first second
unique Contiene il valore di local_time convertito in sys_time inizializzato zero
nonexistent Oggetto sys_info che termina poco prima del local_time Oggetto sys_info che inizia subito dopo l'oggetto local_time.
ambiguous Oggetto sys_info che termina subito dopo il local_time Oggetto sys_info che inizia subito prima dell'oggetto local_time.

ambiguous codice risultato

Durante la transizione dall'ora legale all'ora solare in autunno, gli orologi ottengono essenzialmente un'ora in più. Questo può generare confusione perché la transizione all'ora solare significa perdere un'ora? Eseguendo il fallback di un'ora, l'ora prima della transizione verrà ripetuta dopo che l'orologio viene regolato per l'ora solare. Prendere in considerazione la modifica all'ora solare a New York, che si verifica la prima domenica a novembre alle 2:00. Prima di tutto, le 1:00 di mattina passano. Alle 2:00, l'orologio passa all'ora solare, quindi ora è di nuovo alle 1:00. Ciò significa che l'orario tra le 1:00 e le 2:00 sarà "ripetuto", aggiungendo in modo efficace un'ora. Per un esempio, vedere ambiguous_local_time.

Se un local_time oggetto specifica un'ora durante l'ora "extra", non è chiaro come convertirla. L'ora convertita deve essere considerata come la "prima" volta che si verifica l'ora o il "secondo"? Se l'enumerazione choose non viene specificata per indicare quale deve essere, aspettarsi result di essere impostata su ambiguouse first rifletterà second le due opzioni per l'ora in cui potrebbe local_time essere convertita.

nonexistent codice risultato

Durante la transizione dall'ora solare all'ora legale in primavera, gli orologi perdono essenzialmente un'ora. Questo può generare confusione perché la transizione all'ora legale significa aggiungere un'ora? Per "springing forward" un'ora, l'ora successiva alla transizione viene effettivamente rimossa. Prendere in considerazione la modifica all'ora legale a New York, che si verifica la seconda domenica a marzo alle 2:00. Alle 2:00, l'orologio passa all'ora legale e ora legge le 3:00. Se l'oggetto local_time convertito è 2:30am, ad esempio, l'ora è durante il periodo in cui è stato "rimosso" e quindi si può prevedere result di avere il nonexistent codice. Per un esempio, vedere nonexistent_local_time.

Esempio: ottenere un 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)

Requisiti

Intestazione: <chrono>

Spazio dei nomi: std::chrono

Opzione del compilatore: /std:c++latest

<chrono>
ambiguous_local_time eccezione
choose enumerazione
Classe file_clock
high_resolution_clock
local_t Struct
non_existent eccezione
system_clock Struct
Classe tai_clock
Classe utc_clock
Riferimento file di intestazione