<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 emQueryPerformanceCounter()
high_resolution_clock
agora é um typedef parasteady_clock
na implementação do Microsoft C++,steady_clock::time_point
agora é umtypedef
parachrono::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 duration Rep . |
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;