Classe time_zone
Un time_zone
oggetto rappresenta il fuso orario per un'area geografica specifica. Ha la cronologia completa delle regole del fuso orario per ogni area, in modo che le conversioni temporali siano accurate se si converte un'ora per una data in cui le regole sono diverse per il fuso orario rispetto a oggi.
Sintassi
class time_zone; // Since C++20
Osservazioni:
La <chrono>
libreria crea time_zone
oggetti come parte dell'inizializzazione del database del fuso orario. const
Fornisce l'accesso agli oggetti creati.
Non è possibile costruire o copiare un time_zone
oggetto e l'uso del costruttore di spostamento predefinito o dell'operatore di assegnazione di spostamento predefinito comporta un comportamento non definito.
Questo è il modo in cui si ottiene un'istanza time_zone
:
const auto& timeZoneDatabase = get_tzdb(); // initialize the time zone database
const auto& currentZone = timeZoneDatabase.current_zone();
Microsoft C++ supporta la time_zone
classe a partire da Visual Studio 2019 versione 16.10. La time_zone
classe è una funzionalità C++20. L'opzione /std:c++latest
del compilatore è obbligatoria.
Membri
Funzioni membro pubbliche e modelli di funzione
Nome | Descrizione |
---|---|
get_info |
Ottiene un oggetto sys_info o local_info per l'oggetto time_zone . |
name |
Ottiene il nome di time_zone . |
to_local |
Converte un oggetto sys_time in in local_time .time_zone |
to_sys |
Converte un oggetto local_time in in sys_time .time_zone |
Requisiti
Intestazione: <chrono>
I dati del fuso orario sono disponibili solo per Windows 10 versione 1903/19H1 e successive e Windows Server 2022 e versioni successive.
Spazio dei nomi: std::chrono
get_info
Il modello get_info
di funzione ha due overload che ottengono un oggetto sys_info
o local_info
per questo time_zone
oggetto .
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
Parametri
Duration
Classe duration
per il sys_time
parametro o local_time
.
st
Punto sys_time
di tempo utilizzato per ottenere un sys_info
risultato.
lt
Punto local_time
di tempo utilizzato per ottenere un local_info
risultato.
Valore restituito
get_info
Nel modello di funzione che richiede un sys_time
punto st
di tempo restituisce un sys_info
oggetto i
in modo che st
si trova nell'intervallo [i.begin, i.end)
.
get_info
Nel modello di funzione che richiede un local_time
punto lt
di tempo restituisce un local_info
oggetto .
Osservazioni:
Microsoft C++ supporta time_zone::get_info
l'avvio in Visual Studio 2019 versione 16.10. La funzione è una funzionalità C++20 che richiede l'opzione del /std:c++latest
compilatore.
name
Ottiene il nome di time_zone
.
string_view name() const noexcept; // Since C++20
Valore restituito
Restituisce il nome del fuso orario come .string_view
Osservazioni:
Microsoft C++ supporta time_zone::name
l'avvio in Visual Studio 2019 versione 16.10.
to_local
Il modello to_local
di funzione converte un oggetto sys_time
in in local_time
questo time_zone
oggetto .
template<class Duration>
local_time<common_type_t<Duration, seconds>>
to_local(const sys_time<Duration>& st) const; // Since C++20
Parametri
Duration
Classe duration
per il sys_time
parametro o local_time
.
st
Punto sys_time
di tempo utilizzato per ottenere un sys_info
risultato.
Valore restituito
to_local
restituisce l'oggetto local_time
associato a st
in questo time_zone
oggetto .
Osservazioni:
Microsoft C++ supporta time_zone::to_local
l'avvio in Visual Studio 2019 versione 16.10. La funzione è una funzionalità C++20 che richiede l'opzione del /std:c++latest
compilatore.
Esempio: convertire sys_time
in 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
Il modello di to_sys
funzione ha due overload che converte un oggetto local_time
in in sys_time
questo time_zone
oggetto .
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
Parametri
Duration
Classe duration
per il local_time
parametro .
lt
Punto local_time
di tempo da convertire.
z
Valore di choose::earliest
o choose::latest
. Viene usato per risolvere risultati altrimenti ambigui.
Valore restituito
to_sys
restituisce un oggetto sys_time
che è almeno corretto come seconds
. È più corretto se l'argomento lt
ha precisione più fine. L'oggetto restituito sys_time
è l'equivalente UTC di lt
in base alle regole di questo time_zone.
L'overload di un parametro genera un'eccezione ambiguous_local_time
se la conversione da lt
a un sys_time
oggetto è ambigua e un'eccezione nonexistent_local_time
se il punto ora locale rappresenta un punto orario locale inesistente. L'ambiguità può verificarsi durante la transizione dell'ora legale alla transizione dell'ora solare. Due istanze dello stesso punto orario locale possono verificarsi in un giorno. Un punto orario locale inesistente rappresenta un punto di ora nella transizione dall'ora solare all'ora legale.
L'overload a due parametri non genera un'eccezione in questi casi. Se la conversione da lt
a è sys_time
ambigua, to_sys
restituisce il valore precedente sys_time
se z
è choose::earliest
e restituisce il valore successivo sys_time
se z
è choose::latest
. Se rappresenta lt
un'ora inesistente tra due punti ora UTC, i due punti ora UTC sono gli stessi, quindi to_sys
restituisce il punto di ora UTC.
Osservazioni:
Microsoft C++ supporta time_zone::to_sys
l'avvio in Visual Studio 2019 versione 16.10. La funzione è una funzionalità C++20 che richiede l'opzione del /std:c++latest
compilatore.
Esempio: convertire local_time
in 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
Vedi anche
<chrono>
Informazioni di riferimento per i file di intestazione