Classe zoned_time
Un zoned_time
oggetto è un'associazione di un time_zone
oggetto e un oggetto time_point
. Dà un time_point
significato all'interno di un fuso orario specifico.
Sintassi
template<class Duration, class TimeZonePtr = const time_zone*>
class zoned_time ; // C++20
Osservazioni:
Un zoned_time
fa sempre riferimento a un fuso orario valido e rappresenta un punto nel tempo esistente e non è ambiguo in tale fuso orario.
Membri
Nome | Descrizione |
---|---|
Costruttori | Creare un oggetto zoned_time . |
get_info |
Usa il fuso orario in questo zoned_time oggetto per ottenere informazioni sul punto orario in zoned_time . |
get_local_time |
Combina il fuso orario in zoned_time con il punto di tempo archiviato per produrre l'ora locale in tale fuso orario. |
get_sys_time |
Ottiene il punto di tempo archiviato in questo zoned_time oggetto senza applicare il fuso orario. |
get_time_zone |
Ottiene il time_zone archiviato in questo zoned_time oggetto . |
operator= |
Assegnare il valore di un altro zoned_time oggetto o di local_time un altro zoned_time oggetto a sys_time questo zoned_time oggetto . |
operator local_time |
Combina il zoned_time fuso orario dell'oggetto con il punto di tempo archiviato per produrre l'ora locale in tale fuso orario. |
operator sys_time |
Ottiene l'ora archiviata in questo zoned_time oggetto senza applicare il fuso orario. |
Membri non membri
Nome | Descrizione |
---|---|
operator== |
Determinare se due zoned_time istanze sono uguali. |
operator<< |
Restituisce un oggetto zoned_time nel flusso specificato. |
Alias del tipo di praticità
Nome | Descrizione |
---|---|
zoned_seconds |
Sinonimo di zoned_time<seconds>; |
zoned_time::duration |
Durata misurata in secondi. È un sinonimo di common_type_t<Duration, seconds>; |
Requisiti
Intestazione: <chrono>
Microsoft C++ supporta la zoned_time
classe a partire da Visual Studio 2019 versione 16.10.
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
Opzione del compilatore: /std:c++latest
Costruttori
Creare un oggetto zoned_time
.
1) zoned_time();
2) zoned_time(const zoned_time& zt) = default;
3) explicit zoned_time(TimeZonePtr z);
4) zoned_time(const sys_time<Duration>& st);
5) explicit zoned_time(string_view name);
6) zoned_time(TimeZonePtr z, const local_time<Duration>& tp);
7) zoned_time(TimeZonePtr z, const local_time<Duration>& tp, choose c);
8) zoned_time(TimeZonePtr z, const sys_time<Duration>& st);
9) zoned_time(string_view name, const local_time<Duration>& tp);
10) zoned_time(string_view name, const local_time<Duration>& tp, choose c);
11) zoned_time(string_view name, const sys_time<Duration>& st);
12) template<class Duration, class TimeZonePtr> zoned_time(string_view name, const zoned_time<Duration>& y);
13) template<class Duration, class TimeZonePtr> zoned_time(string_view name, const zoned_time<Duration>& y, choose c);
14) template<class Duration> zoned_time(const zoned_time<Duration, TimeZonePtr>& y);
15) template<class Duration, class TimeZonePtr> zoned_time(TimeZonePtr z, const zoned_time<Duration, TimeZonePtr>& y);
16) template<class Duration, class TimeZonePtr> zoned_time(TimeZonePtr z, const zoned_time<Duration, TimeZonePtr>& y, choose);
Parametri
c
Indica come gestire orari locali ambigui o inesistenti durante la conversione di un oggetto local_time
in un oggetto sys_time
. Per altre informazioni, vedere choose
enumerazione.
name
Nome di un fuso orario.
st
Oggetto sys_time
con una durata specificata. Utilizzato per impostare l'ora.
tp
Oggetto local_time
con una durata specificata. Utilizzato per impostare l'ora.
y
Oggetto zoned_time
copiato per costruire un nuovo zoned_time
oggetto .
z
Oggetto time_zone
che è std::move(z)
'd nell'oggetto costruito zoned_time
.
zt
Puntatore zoned_time
che è std::move(zt)
'd nell'oggetto costruito zoned_time
.
Osservazioni:
1) Inizializza il fuso orario con traits::default_zone()
e il valore predefinito costruisce il punto di tempo.
2) Costruttore di copia predefinito.
3) Inizializza il fuso orario con std::move(z)
e il valore predefinito costruisce il punto di tempo.
4) Inizializza il fuso orario con traits::default_zone()
e l'ora con st
.
5) Inizializza il fuso orario con traits::locate_zone(name)
e il valore predefinito costruisce il punto di tempo.
6) Inizializza il fuso orario con std::move(z)
e l'ora convertendo tp
come se .z->to_sys(tp)
7) Inizializza il fuso orario con std::move(z)
e l'ora come se fosse z->to_sys(tp, c)
. Vedere choose
enumerazione per informazioni su come il parametro c
influisce sul risultato.
8) Inizializza il fuso orario con std::move(z)
e l'ora con st
.
9) Equivalente alla costruzione con {traits::locate_zone(name), tp}
.
10) Equivalente alla costruzione con {traits::locate_zone(name), tp, c}
.
11) Equivalente alla costruzione con {traits::locate_zone(name), st}
.
12) Equivalente alla costruzione con {traits::locate_zone(name), y}
.
13) Equivalente alla costruzione con {traits::locate_zone(name), y, c}
. Il choose
parametro , c
, non ha alcun effetto.
14) Inizializza il fuso orario dal fuso orario e dal y
punto orario.
15) Inizializza il fuso orario con std::move(z)
e l'ora dal y
punto di tempo.
16) Equivalente alla costruzione con {z, y}
. Il choose
parametro , c
, non ha alcun effetto.
Nota
zoned_time
non ha un costruttore di spostamento. Il tentativo di spostarlo comporta una copia usando il costruttore di copia predefinito.
Esempio: costruire un zoned_time
Di seguito viene illustrato come creare un'istanza zoned_time
per il fuso "Antarctica/Casey"
orario , il 15/09/2021 alle 14:45:
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
std::cout << zt;
return 0;
}
2021-09-16 03:45:00 GMT+11
get_info
Usa il fuso orario in questo zoned_time
oggetto per ottenere informazioni sul punto orario in zoned_time
.
sys_info get_info() const;
Valore restituito
Oggetto sys_info
che contiene l'offset UTC per il fuso orario e l'ora, l'offset di regolazione dell'ora legale e così via.
Esempio: get_info
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
sys_info si = zt.get_info();
std::cout << si;
return 0;
}
begin: 2020-10-03 16:01:00, end: 32767-12-31 23:59:59, offset: 39600s, save: 0min, abbrev: GMT+11
get_local_time
Ottiene un oggetto local_time<duration>
che rappresenta l'ora locale in base al fuso orario e al punto orario di questo zoned_time
oggetto.
local_time<duration> get_local_time() const;
Valore restituito
L'oggetto restituito local_time
è un sinonimo di time_point<local_t, duration>
.
Esempio: get_local_time
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
std::cout << zt.get_info();
return 0;
}
2021-09-16 03:45:00
get_sys_time
Ottiene l'ora archiviata nell'oggetto zoned_time
per .system_clock
sys_time<duration> get_sys_time() const;
Valore restituito
Ora archiviata in questo zoned_time
oggetto , senza alcuna regolazione per il fuso orario. Rappresenta l'ora dell'orologio a parete a livello di sistema come time_point. L'oggetto restituito sys_time
è un sinonimo di template <class Duration> time_point<system_clock Duration>;
Esempio: get_sys_time
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
std::cout << zt.get_sys_time();
return 0;
}
2021-09-15 16:45:00
get_time_zone
Ottiene il fuso orario archiviato in questo zoned_time
oggetto .
TimeZonePtr get_time_zone() const;
Valore restituito
Puntatore al time_zone archiviato in questo zoned_time
oggetto .
Esempio: get_time_zone
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
auto pTZ = zt.get_time_zone();
std::cout << pTZ->name();
return 0;
}
Antarctica/Casey
operator=
Assegnarne un altro zoned_time
a this
uno. In alternativa, assegnare solo gli altri zoned_time
sys_time
oggetti o local_time
.
1) zoned_time& operator=(const zoned_time& zt) = default;
2) zoned_time& operator=(const sys_time<Duration>& st);
3) zoned_time& operator=(const local_time<Duration>& lt);
Parametri
zt
Oggetto zoned_time
da assegnare a this
uno.
st
Oggetto sys_time
da assegnare all'oggetto archiviato time_point
in questo zoned_time
oggetto .
lt
Oggetto local_time
da assegnare all'oggetto archiviato time_point
in questo zoned_time
oggetto .
Valore restituito
*this
Esempio: operator=
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt1{}, zt2("Pacific/Galapagos", sys_days{2021y/September/15d} + 16h + 45min);
std::cout << zt2.get_local_time() << "\n";
zt1 = zt2.get_local_time();
std::cout << zt1.get_local_time();
return 0;
}
2021-09-15 10:45:00
2021-09-15 10:45:00
Osservazioni:
1) Operatore di assegnazione di copia predefinito. Copia (non sposta) il puntatore archiviato time_point
e time_zone dall'altro zoned_time
in .zoned_time
2) Assegna st
a in time_point
questo zoned_time
oggetto . Dopo l'assegnazione, *this->get_sys_time() == st;
3) Converte lt
(a local_time
) in un oggetto sys_time
. Esegue questa operazione essenzialmente come timeZone->to_sys(lt)
e assegna il risultato a [time_point
] in questo zoned_time
oggetto . Dopo l'assegnazione, *this->get_local_time() == lt;
operator local_time
Combina il zoned_time
fuso orario dell'oggetto con il punto di tempo archiviato per produrre l'ora locale in tale fuso orario.
explicit operator local_time<duration>() const;
Valore restituito
Oggetto time_point<local_t, Duration>
che rappresenta l'ora locale per l'ora e il fuso orario in questo zoned_time
oggetto . È possibile usare l'alias local_time
pratico per rappresentare un valore restituito da questa funzione.
Il valore restituito è efficace timeZone->to_local(get_sys_time());
Esempio: operator local_time
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Pacific/Galapagos", sys_days{ 2021y / September / 15d } + 16h + 45min);
std::cout << (local_time<seconds>)zt;
return 0;
}
2021-09-15 10:45:00
operator sys_time
Ottiene il punto di tempo archiviato in questo zoned_time
oggetto senza applicare il fuso orario.
operator sys_time<duration>() const;
Valore restituito
Ora archiviata in questo zoned_time
oggetto , senza alcuna regolazione per il fuso orario. L'oggetto restituito sys_time
è un sinonimo di template <class Duration> time_point<system_clock Duration>;
e rappresenta lo stesso punto nel tempo archiviato in questo zoned_time
oggetto .
Esempio: operator sys_time
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Pacific/Galapagos", sys_days{2021y/September/15d} + 16h + 45min);
std::cout << (sys_time<seconds>)zt;
return 0;
}
2021-09-15 16:45:00
Vedi anche
<chrono>
time_point
time_zone
zoned_traits
Struct
Informazioni di riferimento per i file di intestazione