Condividi tramite


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_timeoggetto .
operator= Assegnare il valore di un altro zoned_timeoggetto o di local_time un altro zoned_timeoggetto a sys_timequesto zoned_timeoggetto .
operator local_time Combina il zoned_timefuso 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_timeoggetto .

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 ypunto orario.
15) Inizializza il fuso orario con std::move(z) e l'ora dal ypunto 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_timeoggetto.

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_timeoggetto , 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_timeoggetto .

TimeZonePtr get_time_zone() const;

Valore restituito

Puntatore al time_zone archiviato in questo zoned_timeoggetto .

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_timesys_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_timeoggetto .

lt
Oggetto local_time da assegnare all'oggetto archiviato time_point in questo zoned_timeoggetto .

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_timeoggetto . 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_timeoggetto . Dopo l'assegnazione, *this->get_local_time() == lt;

operator local_time

Combina il zoned_timefuso 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_timeoggetto . È 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_timeoggetto , 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_timeoggetto .

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