Classe utc_clock
Um relógio em UTC (Tempo Universal Coordenado), que às vezes é conhecido popularmente como GMT (Tempo Médio de Greenwich) ou horário Zulu. A hora local é ajustada com base no horário UTC dependendo do fuso horário.
Sintaxe
class utc_clock; // C++20
Comentários
Este relógio mede o tempo desde 00:00:00 UTC na quinta-feira, 1º de janeiro de 1970. Este relógio conta os segundos intercalares e é a base do horário civil em todo o mundo.
A taxa do tempo UTC baseia-se no TAI (Tempo Atômico Internacional), que usa relógios atômicos para acompanhar o tempo. No entanto, um segundo intercalar é adicionado ocasionalmente ao horário UTC para manter a diferença entre o UTC e o UT1 (tempo solar) em +- 0,9 segundo.
Há uma discrepância entre o tempo controlado pelos relógios atômicos e o tempo controlado acompanhando a rotação da Terra. Isso ocorre porque a velocidade de rotação da Terra é irregular, e em geral está desacelerando ao longo do tempo em cerca de um segundo a cada 1,5 anos (embora às vezes a velocidade de rotação da Terra aumente). Um ajuste de segundo intercalar mantém o horário acompanhado pelo UTC dentro de um segundo da duração média de um dia.
No momento da redação deste artigo, 27 segundos intercalares foram adicionados desde que a prática de inseri-los começou em 1972. O IERS (International Earth Rotation and Reference Systems Service) determina quando um segundo intercalar será adicionado. Adicionar um segundo intercalar é chamado de "inserção de segundo intercalar". Quando um segundo intercalar é inserido, o horário, conforme se aproxima da meia-noite, passa de 23 horas, 59 minutos e 59 segundos para 23 horas, 59 minutos e 60 segundos (o segundo intercalar inserido) e, em seguida, para 0 hora, 0 minuto e 0 segundo (meia-noite). Historicamente, os segundos intercalares foram adicionados em 30 de junho ou 31 de dezembro.
O horário UTC, por definição, começa 10 segundos atrás do TAI (tempo atômico). 10 segundos foram adicionados em 1972 ao horário TAI para acomodar os segundos intercalares acumulados até então. Dada a inserção de mais 27 segundos intercalares desde então, o horário UTC está 37 segundos atrás do horário TAI (relógio atômico).
Membros
Nome | Descrição |
---|---|
from_sys |
Estático. Converte uma sys_time em uma utc_time . |
now |
Estático. Retorna o tempo atual. |
to_sys |
Estático. Converte uma utc_time em uma sys_time . |
Não membros
Nome | Descrição |
---|---|
from_stream |
Analise um utc_time do fluxo fornecido usando o formato especificado. |
get_leap_second_info |
Obtém leap_second_info, que indica se a hora fornecida especifica uma hora em que um segundo intercalar foi inserido. Também inclui a soma de todos os segundos intercalares entre 1º de janeiro de 1970 e a duração especificada. |
operator<< |
Gerar um utc_time para o fluxo fornecido. |
Aliases de tipo de conveniência
Nome | Descrição |
---|---|
utc_clock::duration |
Na implementação da Microsoft, isso é sinônimo de duration<system_clock::rep, system_clock::period> . Isso representa uma duração de tempo medida em unidades de 100 nanossegundos. |
utc_clock::period |
A implementação da Microsoft o define como sinônimo de system_clock::period . Representa o tempo em segundos (100 nanossegundos) entre cada tique na duração. |
utc_clock::rep |
Um sinônimo do tipo (long long ) usado para representar as unidades integrais no relógio utc_clock::duration . |
utc_clock::time_point |
Um sinônimo de time_point<utc_clock> . Usado para representar um time_point para esse relógio. |
Relacionado
Nome | Descrição |
---|---|
utc_seconds |
Um sinônimo de using utc_seconds = utc_time<seconds>; |
utc_time |
Um sinônimo de template<class Duration> using utc_time = time_point<utc_clock, Duration>; Representa um time_point para um utc_clock . Você especifica a duração. Definido em std::chrono |
Constantes públicas
Nome | Descrição |
---|---|
[utc_clock::is_steady constant] (#is_steady_constant) |
Indica se o tipo de relógio é estável. Seu valor é false . |
Requisitos
Cabeçalho: <chrono>
(desde C++20)
Namespace: std::chrono
Opção do compilador: /std:c++latest
from_sys
Método estático que converte um sys_time
em um utc_time
.
template<class Duration>
static utc_time<common_type_t<Duration, seconds>>
from_sys(const sys_time<Duration>& t);
Parâmetros
t
O sys_time
a ser convertido.
Valor retornado
Um utc_time
conjunto para o tempo que mais se aproxima do sys_time
t
. Se não houver um mapeamento direto, o time_point durante uma inserção de segundo intercalar e o último valor representável de sys_time
antes da inserção do segundo intercalar serão retornados.
to_sys
Método estático que converte um utc_time
em um sys_time
.
template<class Duration>
static sys_time<common_type_t<Duration, seconds>>
to_sys(const utc_time<Duration>& t);
Parâmetros
t
O utc_time
a ser convertido.
Valor de retorno
O sys_time
definido como o ponto no tempo equivalente a t
. Se não houver um mapeamento direto, ele será o último valor representável antes da inserção de um segundo intercalar no caso em que t
representa um ponto no tempo em que um segundo intercalar foi inserido. Adicionar um segundo intercalar é chamado de "inserção de segundo intercalar". Quando um segundo intercalar é inserido, o horário, conforme se aproxima da meia-noite, passa de 23 horas, 59 minutos e 59 segundos para 23 horas, 59 minutos e 60 segundos (o segundo intercalar inserido) e, em seguida, para 0 hora, 0 minuto e 0 segundo (meia-noite). No passado, os segundos intercalares foram adicionados em 30 de junho ou 31 de dezembro.
is_steady
Valor estático que especifica se o tipo de relógio é estável. Na implementação da Microsoft, is_steady_constant
é false
. Como o utc_clock
não é estável, não é possível usar esse relógio de maneira confiável para mediar o tempo antes de um evento, o tempo após um evento e subtraí-los para obter a duração do evento porque o relógio pode ser ajustado durante esse tempo.
static const bool is_steady = false;
now
Método estático que retorna a hora UTC atual. A hora retornada inclui segundos intercalares.
static time_point now() noexcept;
Valor de retorno
Um objeto time_point
que representa a hora atual. O ponto de tempo retornado é efetivamente from_sys(system_clock::now())
.
Confira também
<chrono>
file_clock class
gps_clock class
high_resolution_clock
Structlocal_t
Structsteady_clock
Structsystem_clock
tai_clock
classe
Referência de Arquivos de Cabeçalho