<chrono>

Inclua o cabeçalho padrão <chrono> para definir classes e funções que representam e manipulam durações de tempo e instantes de tempo.

Começando no Visual Studio 2015, a implementação de steady_clock mudou para atender aos requisitos de estabilidade e monotonicidade do C++ Padrão:

  • steady_clock agora é baseado em QueryPerformanceCounter()
  • high_resolution_clock agora é um typedef para steady_clock na implementação do Microsoft C++, steady_clock::time_point agora é um typedef para chrono::time_point<steady_clock>. No entanto, isso não é necessariamente o caso para outras implementações.

Requisitos

Cabeçalho<chrono>:

As legislaturas regionais ocasionalmente fazem alterações nos fusos horários, e um órgão internacional de padrões especifica quando novos segundos bissextos devem ser contabilizados. Um banco de dados dessas alterações foi adicionado ao Windows 10. Especificamente:

Recurso Versão do cliente Versão do servidor
Atualizações de banco de dados de segundos bissextos Windows 10 versão 1809 ou posterior Windows Server 2019 ou posterior
Suporte a fuso horário Windows 10 versão 1903/19H1 ou posterior Windows Server 2022 ou posterior

Usar as instalações de fuso horário em versões mais antigas do Windows resulta em um erro de runtime.

Namespace:std

Tipos calendrical

Nome Descrição
Struct common_type Descreve especializações do modelo de classe common_type para instanciações de duration e time_point.
day classe Um dia do mês. Por exemplo, o 25º dia do mês.
duration classe Um intervalo de tempo.
Struct duration_values Fornece valores específicos para o parâmetro de modelo durationRep.
hh_mm_ss classe Divide um duration em horas:minutos:segundos.
last_spec Usado para indicar o último item em um mês, como o último dia da semana de um mês (a última terça-feira de fevereiro de 2020) ou o último dia de um mês (o último dia de abril de 2019).
leap_second classe Uma data e um valor para um segundo bissexto inserido.
Struct leap_second_info Os dados retornados por get_leap_second_info.
month classe Um mês de um ano. Por exemplo, julho.
month_day classe Um dia específico de um mês específico. Por exemplo, 30 de julho.
month_day_last classe O último dia de um mês.
month_weekday classe O nº dia útil de um mês específico.
month_weekday_last classe O nº dia útil de um mês específico.
time_point classe Um momento específico.
weekday classe Um dia da semana.
weekday_last classe O último dia da semana de um mês.
weekday_indexed classe Combina um dia da semana com um índice que representa o dia útil do mês.
year classe Um ano no calendário gregoriano.
year_month classe Um ano e um mês. O dia não é especificado.
year_month_day classe Um ano, mês e dia.
year_month_day_last classe O último dia de um mês e um ano específicos.
year_month_weekday classe Um ano, mês e nº dia útil do mês específicos.
year_month_weekday_last classe Um ano, mês e último dia útil do mês específicos.

Relógios

Nome Descrição
file_clock classe Um alias para o relógio usado para std::filesystem::file_time_type, que é usado para expressar carimbos de data/hora de arquivo.
gps_clock classe Um relógio que mantém o horário de GPS. Mede o tempo a partir do primeiro domingo de janeiro de 1980 às 00:00:00 UTC.
Struct high_resolution_clock Um relógio com um período de tique de um nanossegundo.
Struct local_t Um pseudorrelógio usado como um argumento para o modelo time_point para indicar que o time_point representa a hora local.
Struct steady_clock Um relógio steady. Esse relógio é preferencial para medir intervalos de tempo.
Struct system_clock Um relógio baseado no relógio de tempo real do sistema.
tai_clock classe Mede a TAI (Hora Atômica Internacional) a partir de quinta-feira, 1º de janeiro de 1958 às 00:00:00. O relógio não contabiliza segundos intercalares.
utc_clock classe Mede o tempo desde 00:00:00 UTC na quinta-feira, 1º de janeiro de 1970. Este relógio contabiliza segundos bissextos e é o padrão de tempo usado em todo o mundo.

Fusos horários

Nome Descrição
choose Uma enumeração que especifica como resolver a conversão ambígua de um local_time em um sys_time.
local_info Fornece uma interface de baixo nível para informações de fuso horário sobre o resultado da conversão de um local_time em um sys_time.
sys_info Fornece uma interface de baixo nível para informações de fuso horário sobre o resultado da conversão de um sys_time em um local_time.
time_zone classe Todas as transições de fuso horário para uma área geográfica específica.
time_zone_link classe Um nome alternativo para um time_zone.
Struct tzdb Representa uma cópia do banco de dados de fuso horário.
tzdb_list classe Uma lista singleton de bancos de dados de fuso horário.
zoned_time classe Um emparelhamento de um time_zone e um time_point com uma precisão especificada.
Struct zoned_traits Usado para associar um fuso horário padrão diferente a um zoned_time, e, opcionalmente, mapear um nome personalizado a esse fuso horário padrão.

Exceções

Nome Descrição
ambiguous_local_time Erro gerado quando um local_time é convertido em um sys_time e o resultado é ambíguo.
nonexistent_local_time Erro gerado quando um local_time é convertido em um sys_time e o resultado é uma hora que não existe.

Funções

Nome Descrição
ceil(duration) Retorna o ceil de um objeto duration como um tipo especificado.
ceil(time_point) Retorna o ceil de um objeto time_point como um tipo especificado.
clock_cast Converte um time_point de um relógio para um time_point equivalente de outro relógio.
duration_cast Converte um objeto duration em um tipo especificado.
floor(duration) Retorna o floor de um objeto duration como um tipo especificado.
floor(time_point) Retorna o floor de um objeto time_point como um tipo especificado.
from_stream() Analise o fluxo de entrada em um dos tipos de tempo ou intervalo de std::chrono, como day, month, weekday, year e assim por diante, usando o formato especificado.
get_leap_second_info Obtém um struct leap_second_info.
is_am Se um objeto hours é ou não AM.
is_pm Se um objeto hours é ou não PM.
locate_zone Obtém um fuso horário especificado.
make12 Retorna um hours em formato de 12 horas.
make24 Retorna um hours em formato de 24 horas.
round(duration) Retorna um objeto duration arredondado como um tipo especificado.
round(time_point) Retorna um objeto time_point arredondado como um tipo especificado.
time_point_cast Converte um objeto time_point em um tipo especificado.

Fuso horário relacionado

Nome Descrição
current_zone Obtém o fuso horário atual.
get_tzdb Obtém a primeira entrada de banco de dados de fuso horário.
get_tzdb_list Obtém a lista de entradas de banco de dados de fuso horário.
reload_tzdb Obtém uma entrada de banco de dados de fuso horário atualizada.
remote_version Verifica se há uma entrada de banco de dados de fuso horário atualizada.

Operadores

Nome Descrição
operator- Subtrair ou negar vários objetos <chrono>.
operator!= Operador de desigualdade usado com diversos objetos <chrono>.
operator modulo Operador para operações de módulo em objetos duration.
operator* Operador de multiplicação para objetos duration.
operator/ Operador de divisão para objetos duration.
operator/ Fornece sintaxe para criar datas de calendário.
operator+ Adicione a vários objetos <chrono>.
operator< Determina se vários objetos <chrono> são menores que outro.
operator<= Determina se vários objetos <chrono> são menos ou iguais a outro.
operator== Determina se vários objetos <chrono> são iguais uns aos outros.
operator> Determina se vários objetos <chrono> são maiores que outro.
operator>= Determina se vários objetos <chrono> são maiores ou iguais a outro.

Typedefs

Para obter mais informações sobre tipos de índice usados nos typedefs a seguir, confira <ratio>.

Tipos duration de conveniência

Nome Descrição
typedef duration<long long, nano> nanoseconds; Sinônimo de um tipo duration que tem um período de tique de um bilionésimo (1/1.000.000.000) de segundo.
typedef duration<long long, micro> microseconds; Sinônimo de um tipo duration que tem um período de tique de um milionésimo (1/1.000.000) de segundo.
typedef duration<long long, milli> milliseconds; Sinônimo de um tipo duration que tem um período de tique de um milésimo (1/1.000) de segundo.
typedef duration<long long> seconds; Sinônimo de um tipo duration que tem um período de tique de um segundo.
typedef duration<int, ratio<60>> minutes; Sinônimo de um tipo duration que tem um período de tique de um minuto.
typedef duration<int, ratio<3600>> hours; Sinônimo de um tipo duration que tem um período de tique de uma hora.

Tipos time_point de conveniência

Nome Descrição
file_time Um sinônimo de time_point<file_clock, Duration>. Representa um time_point para um file_clock. Você especifica o Duration, por exemplo, file_time<seconds> ft;.
gps_seconds Um sinônimo para gps_time<seconds>; Uma contagem de segundos, representada por um time_point associado a um gps_clock.
gps_time Um sinônimo de time_point<gps_clock, Duration>. Representa um time_point para um gps_clock. Você especifica o Duration, por exemplo, gps_time<milliseconds> gps;.
local_days Um sinônimo de local_time<days>. Uma contagem de dias, representada por um time_point que não está associado a nenhum fuso horário.
local_seconds Um sinônimo de local_time<seconds>.
local_time Um sinônimo de time_point<local_t, Duration>. Representa um time_point para uma hora local que ainda não está associada a um fuso horário. Você especifica o Duration, por exemplo, local_time<seconds> lt;. A local_time é uma hora local em algum lugar. Ela não é a hora local atual do relógio do computador. Somente quando ao emparelhar um local_time com um time_zone você obtém um ponto no tempo que pode ser convertido em hora UTC ou na hora em um fuso horário específico.
sys_days Um sinônimo de sys_time<days>. Uma contagem de dias desde a época de system_clock, representada por um time_point associado a um system_clock.
sys_seconds Um sinônimo de sys_time<seconds>. Uma contagem de segundos não bissextos desde a época de system_clock (1º de janeiro de 1970 00:00:00 UTC), representada por um time_point associado a um system_clock.
sys_time Um sinônimo de time_point<system_clock, Duration>. Você especifica o Duration, por exemplo, sys_time<seconds> st;. Representa um time_point retornado de system_clock::now(). Ele representa o horário do Unix, que se aproxima bastante da hora UTC.
tai_seconds Um sinônimo de tai_time<seconds>. Uma contagem de segundos, representada por um time_point associado a um tai_clock.
tai_time Um sinônimo de time_point<tai_clock, Duration>. Você fornece o Duration, por exemplo, tai_time<seconds> tt;. Representa um time_point para um tai_clock.
utc_seconds Um sinônimo de utc_time<seconds>;
utc_time Um sinônimo de time_point<utc_clock, Duration>. Você fornece o Duration, por exemplo, utc_time<seconds> ut;. Representa um time_point para um utc_clock.

Características de tipo

Nome Descrição
clock_time_conversion Uma característica que especifica como converter um time_point de um relógio para outro.
is_clock Verifique se um tipo é um relógio.
treat_as_floating_point Verifique se um duration pode ser convertido em outro duration que tenha um período de tique diferente.

Literais

(C++11) O cabeçalho <chrono> define os seguintes literais definidos pelo usuário que você pode usar para maior conveniência, segurança de tipos e facilidade de manutenção do seu código. Esses literais são definidos no namespace embutido literals::chrono_literals e estão no escopo quando std::chrono está no escopo.

Declaração Descrição
hours operator "" h(unsigned long long Val) Especifica horas como um valor integral.
duration<double, ratio<3600>> operator "" h(long double Val) Especifica horas como um valor de ponto flutuante.
minutes (operator "" min)(unsigned long long Val) Especifica minutos como um valor integral.
duration<double, ratio<60>> (operator "" min)( long double Val) Especifica minutos como um valor de ponto flutuante.
seconds operator "" s(unsigned long long Val) Especifica minutos como um valor integral.
duration<double> operator "" s(long double Val) Especifica segundos como um valor de ponto flutuante.
milliseconds operator "" ms(unsigned long long Val) Especifica milissegundos como um valor integral.
duration<double, milli> operator "" ms(long double Val) Especifica milissegundos como um valor de ponto flutuante.
microseconds operator "" us(unsigned long long Val) Especifica microssegundos como um valor integral.
duration<double, micro> operator "" us(long double Val) Especifica microssegundos como um valor de ponto flutuante.
nanoseconds operator "" ns(unsigned long long Val) Especifica nanossegundos como um valor integral.
duration<double, nano> operator "" ns(long double Val) Especifica nanossegundos como um valor de ponto flutuante.

Os seguintes exemplos mostram como usar os literais <chrono>:

constexpr auto day = 24h;
constexpr auto week = 24h* 7;
constexpr auto my_duration_unit = 108ms;

Confira também

Referência de Arquivos de Cabeçalho