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'oggettolocal_time
è stato convertito correttamente in un oggettosys_time
.nonexistent
: non esiste un mapping dalocal_time
asys_time
.ambiguous
: lelocal_time
terre durante una transizione tra l'ora legale e l'ora solare e quindi possono essere convertite in duesys_time
valori.
Osservazioni:
Per informazioni su come first
e second
vengono impostati in result
base 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 ambiguous
e 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