Condividi tramite


Classe utc_clock

Un orologio per l'ora UTC (Coordinated Universal Time), talvolta noto come ora GMT (Greenwich Mean Time) o Zulu. L'ora locale viene modificata dall'ora UTC a seconda del fuso orario.

Sintassi

class utc_clock; // C++20

Osservazioni:

Questo orologio misura l'ora dalle 00:00:00 UTC di giovedì 1 gennaio 1970. Questo orologio rappresenta i secondi bisestile ed è la base per il tempo civile in tutto il mondo.

La frequenza dell'ora UTC si basa sull'ora atomica internazionale (TAI) che usa orologi atomici per tenere traccia dell'ora. Tuttavia, un secondo bisestile viene occasionalmente aggiunto all'ora UTC per mantenere la differenza tra l'ora UTC e l'ora solare UT1 entro +- 0,9 secondi.

C'è una discrepanza tra il tempo mantenuto dagli orologi atomici e il tempo mantenuto tenendo traccia della rotazione della terra. Questo perché la velocità di rotazione della terra è irregolare, e in generale rallenta nel tempo di circa un secondo ogni 1,5 anni (anche se talvolta la velocità di rotazione della terra aumenta). Una seconda regolazione del salto mantiene l'ora di rilevamento UTC entro un secondo della lunghezza media di un giorno.

A partire da questo articolo, sono stati aggiunti 27 secondi bisestile fin dall'inizio della pratica di inserimento dei secondi bisestile nel 1972. Il Servizio IERS (International Earth Rotation and Reference Systems Service) determina quando verrà aggiunto un secondo salto. L'aggiunta di un secondo salto viene definita "inserimento bisestile". Quando viene inserito un secondo bisestile, l'ora, quasi a mezzanotte, procede da 23 ore 59 minuti a 59 secondi fino a 23 ore 59 minuti 60 secondi (secondo salto inserito) e quindi a 0 ore 0 minuti 0 secondi (mezzanotte). Storicamente, i secondi bisestile sono stati aggiunti il 30 giugno o il 31 dicembre.

L'ora UTC, per definizione, inizia 10 secondi dietro TAI (ora atomica). 10 secondi sono stati aggiunti nel 1972 al tempo TAI per contenere i secondi intercalari accumulati da quel punto. Dato l'inserimento di altri 27 secondi intercalari da allora, l'ora UTC è attualmente di 37 secondi dietro l'ora TAI (orologio atomico).

Membri

Nome Descrizione
from_sys Statico. Converte sys_time in utc_time.
now Statico. Restituisce l'ora corrente.
to_sys Statico. Converte utc_time in sys_time.

Membri non membri

Nome Descrizione
from_stream Analizzare un oggetto utc_time dal flusso specificato usando il formato specificato.
get_leap_second_info Ottiene un leap_second_info che indica se l'ora specificata specifica un'ora in cui è stato inserito un secondo bisestile. Include anche la somma di tutti i secondi intercalari tra il 1° gennaio 1970 e la durata specificata.
operator<< Restituisce un oggetto utc_time nel flusso specificato.

Alias del tipo di praticità

Nome Descrizione
utc_clock::duration Nell'implementazione di Microsoft, è un sinonimo di duration<system_clock::rep, system_clock::period>. Rappresenta una durata del tempo misurata in unità di 100 nanosecondi.
utc_clock::period L'implementazione di Microsoft lo definisce come sinonimo di system_clock::period. Rappresenta il tempo in secondi (100 nanosecondi) tra ogni tick nella durata.
utc_clock::rep Sinonimo del tipo (long long) utilizzato per rappresentare le unità integrali di questo orologio.utc_clock::duration
utc_clock::time_point Sinonimo di time_point<utc_clock>. Utilizzato per rappresentare un oggetto time_point per questo orologio.

Imparentato

Nome Descrizione
utc_seconds Sinonimo di using utc_seconds = utc_time<seconds>;
utc_time Sinonimo di template<class Duration> using utc_time = time_point<utc_clock, Duration>;Rappresenta un oggetto time_point per un oggetto utc_clock. Specificare la durata. Definito in std::chrono

Costanti pubbliche

Nome Descrizione
[utc_clock::is_steady constant](#is_steady_constant) Indica se il tipo di orologio è costante. Il valore è false.

Requisiti

Intestazione: <chrono> (da C++20)

Spazio dei nomi: std::chrono

Opzione del compilatore: /std:c++latest

from_sys

Metodo statico che converte un oggetto sys_time in un oggetto utc_time.

template<class Duration>
static utc_time<common_type_t<Duration, seconds>>
from_sys(const sys_time<Duration>& t);

Parametri

t
Oggetto sys_time da convertire.

Valore restituito

Oggetto utc_time impostato sul tempo più vicino all'oggetto sys_time t. Se non esiste un mapping diretto, viene restituito il time_point durante un secondo inserimento leap e l'ultimo valore rappresentabile di sys_time prima dell'inserimento del secondo salto.

to_sys

Metodo statico che converte un oggetto utc_time in un oggetto sys_time.

template<class Duration>
static sys_time<common_type_t<Duration, seconds>>
to_sys(const utc_time<Duration>& t);

Parametri

t
Oggetto utc_time da convertire.

Valore restituito

Oggetto sys_time impostato sul punto nel tempo equivalente come t. Se non esiste un mapping diretto, è l'ultimo valore rappresentabile prima dell'inserimento di un secondo salto nel caso che t rappresenti un punto nel tempo in cui è stato inserito un secondo salto. L'aggiunta di un secondo salto viene definita "inserimento bisestile". Quando viene inserito un secondo bisestile, l'ora che si avvicina alla mezzanotte procede da 23 ore 59 minuti 59 secondi a 23 ore 59 minuti 60 secondi (secondo salto inserito) e quindi a 0 ore 0 minuti 0 secondi (mezzanotte). In passato sono stati aggiunti secondi bisestile il 30 giugno o il 31 dicembre.

is_steady

Valore statico che specifica se il tipo di clock è costante. Nell'implementazione di Microsoft è is_steady_constant false. Poiché non utc_clock è costante, non è possibile usare questo orologio in modo affidabile per impiegare il tempo prima di un evento, l'ora dopo un evento e sottraerle per ottenere la durata dell'evento perché l'orologio può essere regolato durante tale tempo.

static const bool is_steady = false;

now

Metodo statico che restituisce l'ora UTC corrente. Il tempo restituito include secondi intercalari.

static time_point now() noexcept;

Valore restituito

Oggetto time_point che rappresenta l'ora corrente. Il punto di tempo restituito è effettivamente from_sys(system_clock::now()).

Vedi anche

<chrono>
file_clock class
gps_clock class
high_resolution_clock
local_t Struct
steady_clock Struct
system_clock Struct
Classe tai_clock
Riferimento file di intestazione