Partilhar via


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