Funções <chrono>
abs(duration)
Retorna d
se d >= d.zero()
; caso contrário, retorna -d
.
Sintaxe
template <class Rep, class Period>
constexpr duration<Rep, Period> abs(duration<Rep, Period> d ); // C++17
Parâmetros
Rep
O tipo de representação interna da fonte duration
d
.
Period
Um tipo std::ratio
que representa a proporção de um segundo para o tipo de Rep
de origem (ou seja, segundos por Rep
).
d
O objeto de origem duration
.
Valor retornado
O valor absoluto de d
.
Exemplo: abs(duration)
// compile using: /std:c++latest
#include <chrono>
#include <iostream>
int main()
{
std::cout << abs(-24h);
return 0;
}
24h
ceil(duration)
Retorna o menor duration
representável no tipo de destino maior ou igual ao especificado duration
.
Sintaxe
template<class ToDuration, class Rep, class Period>
constexpr ToDuration
ceil(const duration<Rep, Period>& d); // C++17
Parâmetros
ToDuration
O tipo duration
de destino. Restrito como uma especialização de duration
.
Rep
O tipo de representação interna da fonte duration
d
.
Period
Um tipo std::ratio
que representa a proporção de um segundo para o tipo de Rep
de origem (ou seja, segundos por Rep
).
d
O objeto de origem duration
.
Valor retornado
Retorna o menor duration
representável em ToDuration
que é maior ou igual ao parâmetro d
.
Comentários
ceil
não participa da resolução de sobrecarga, a menos que o tipo ToDuration
seja uma instância de um duration
.
ceil(time_point)
Retorna o menor ponto no tempo representável no alvo duration
que é maior ou igual ao ponto no tempo especificado.
Sintaxe
template<class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
ceil(const time_point<Clock, Duration>& t); // C++17
Parâmetros
ToDuration
O tipo duration
de destino. Restrito como uma especialização de duration
.
Clock
O tipo de relógio comum do resultado e o tp
do parâmetro de origem.
Duration
O tipo duration
de tp
.
tp
O objeto de origem time_point
.
Valor retornado
Retorna o menor ponto de tempo representável usando ToDuration
que é maior ou igual a tp
. Efetivamente, time_point<Clock, ToDuration>(ceil<ToDuration>(tp.time_since_epoch()));
.
Comentários
ceil
não participa da resolução de sobrecarga, a menos que o tipo ToDuration
seja uma instância de um duration
.
clock_cast
Converte um time_point
de um relógio para um time_point
equivalente para outro relógio.
Sintaxe
template <class DestClock, class SourceClock, class Duration>
auto clock_cast(const time_point<SourceClock, Duration>& t); // C++20
Parâmetros
DestClock
O tipo de relógio para o qual converter time_point
.
Duration
duration
de SourceClock
, ou um que você especificar.
SourceClock
O tipo relógio que serve de base para converter time_point
.
t
O time_point
a ser convertido.
Valor retornado
Um time_point
equivalente a t
, mas específico a DestClock
.
Comentários
Os parâmetros SourceClock
e Duration
podem ser inferidos por meio da dedução do argumento de modelo de classe quando não são passados explicitamente. Por exemplo, dado clock_cast<utc_clock>(file_clock::now())
, SourceClock
é deduzido para ser file_clock
e Duration
é deduzido para ser file_clock::duration
.
Na lista a seguir de conversões de relógio bem formadas, a que requer o menor número de etapas de conversão para obter SourceClock
de DestClock
a serem selecionadas.
clock_time_conversion<DestClock, SourceClock>{}(t)
clock_time_conversion<DestClock, system_clock>{}(
clock_time_conversion<system_clock, SourceClock>{}(t))
clock_time_conversion<DestClock, utc_clock>{}(
clock_time_conversion<utc_clock, SourceClock>{}(t))
clock_time_conversion<DestClock, utc_clock>{}(
clock_time_conversion<utc_clock, system_clock>{}(
clock_time_conversion<system_clock, SourceClock>{}(t)))
clock_time_conversion<DestClock, system_clock>{}(
clock_time_conversion<system_clock, utc_clock>{}(
clock_time_conversion<utc_clock, SourceClock>{}(t)))
Para obter mais informações sobre o que clock_time_conversion
faz, confira struct clock_time_conversion
.
Exemplo clock_cast
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
utc_clock::time_point t = clock_cast<utc_clock>(file_clock::now());
std::cout << t;
return 0;
}
2021-10-11 22:58:17.8540720
current_zone
Obtém o objeto do fuso horário atual.
Sintaxe
const time_zone* current_zone(); // C++20
Valor retornado
Retorna um ponteiro para um time_zone
como se por uma chamada para get_tzdb().current_zone()
. Ele gera uma exceção de runtime_error
se for a primeira referência ao banco de dados de fuso horário e o banco de dados de fuso horário não puder ser inicializado.
duration_cast
Converte um duration
para o tipo duration
do destino especificado.
Sintaxe
template <class ToDuration, class Rep, class Period>
constexpr ToDuration
duration_cast(const duration<Rep, Period>& d); // C++11
Parâmetros
ToDuration
O tipo duration
de destino. Restrito como uma especialização de duration
.
Rep
O tipo de representação interna da fonte duration
d
.
Period
Um tipo std::ratio
que representa a proporção de um segundo para o tipo de Rep
de origem (ou seja, segundos por Rep
).
d
O objeto duration
de origem a ser convertido no tipo de destino duration
.
Valor retornado
Um objeto do tipo ToDuration
que representa o duration
d
. Ele é truncado, se necessário, para se ajustar ao tipo de destino. O resultado da conversão de um duration
de ponto flutuante em um duration
integral será indefinido se a origem contiver um NaN
, um infinito ou for muito grande para representação no duration
de destino.
Comentários
Você não precisa usar duration_cast
para converter entre tipos de duration
quando o período de origem é exatamente divisível pelo período de destino, como quando você converte minutos em segundos. Além disso, você não precisa dele para converter entre tipos de duration
de ponto flutuante. Você pode fazer as duas conversões usando conversões comuns ou construtores duration
.
duration_cast
não participa da resolução de sobrecarga, a menos que ToDuration
seja uma instância de duration
. Ele faz todas as conversões usando static_cast
em vez de conversões implícitas. Multiplicações e divisões são evitadas, se possível. Por exemplo, quando o compilador sabe que a proporção comum dos períodos de destino e de origem tem um numerador ou denominador de 1. As computações são feitas no tipo mais amplo disponível e, em seguida, convertidas como se por static_cast
para o tipo de resultado quando concluídas.
Exemplo duration_cast
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
seconds s(1);
std::cout << duration_cast<microseconds>(s) << '\n';
std::cout << duration_cast<nanoseconds>(s) << '\n';
return 0;
}
1000000us
1000000000ns
floor(duration)
Retorna o maior duration
representável no tipo de destino menor ou igual ao especificado duration
.
Sintaxe
template<class ToDuration, class Rep, class Period>
constexpr ToDuration
floor(const duration<Rep, Period>& d); // C++17
Parâmetros
ToDuration
O tipo duration
de destino. Restrito como uma especialização de duration
.
Rep
O tipo de representação interna da fonte duration
d
.
Period
Um tipo std::ratio
que representa a proporção de um segundo para o tipo de Rep
de origem (ou seja, segundos por Rep
).
d
O objeto de origem duration
.
Valor retornado
Retorna o maior duration
representável em ToDuration
que é menor ou igual ao parâmetro d
.
Comentários
floor
não participa da resolução de sobrecarga, a menos que o tipo ToDuration
seja uma instância de um duration
.
floor(time_point)
Retorna o maior ponto no tempo representável no alvo duration
que é menor ou igual ao ponto no tempo especificado.
Sintaxe
template<class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
floor(const time_point<Clock, Duration>& tp); // C++17
Parâmetros
ToDuration
O tipo duration
de destino. Restrito como uma especialização de duration
.
Clock
O tipo de relógio comum do resultado e o tp
do parâmetro de origem.
Duration
O tipo duration
de tp
.
tp
O objeto de origem time_point
.
Valor retornado
Retorna o maior ponto de tempo representável usando ToDuration
que é menor ou igual a tp
. Efetivamente, time_point<Clock, ToDuration>(floor<ToDuration>(tp.time_since_epoch()));
.
Comentários
floor
não participa da resolução de sobrecarga, a menos que o tipo ToDuration
seja uma instância de um duration
.
from_stream
Analise o fluxo de entrada em um dos tipos de tempo ou intervalo de std::chrono
, como day
, month
, month_day
, weekday
, year
, year_month
e year_month_day
, e assim por diante, usando o formato especificado.
Se a análise falhar, is.setstate
(ios_base::failbit
) será chamado e o parâmetro de saída não será modificado.
// 1) day - C++20
template<class charT class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
day& d, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 2) duration - C++20
template<class charT, class traits, class Rep, class Period, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
duration<Rep, Period>& dur, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 3) file_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
file_time<Duration>& ft, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 4) gps_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
gps_time<Duration>& gt, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 5) local_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
local_time<Duration>& lt, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 6) month - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
month& m, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 7) month_day - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
month_day& md, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 8) utc_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
utc_time<Duration>& ut, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 9) sys_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
sys_time<Duration>& st, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 10) tai_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
tai_time<Duration>& tt, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 11) weekday - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
weekday& wd, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 12) year - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
year& y, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 13) year_month - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
year_month& ym, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 14) year_month_day - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
year_month_day& ymd, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
Parâmetros de modelo
Alloc
O tipo que representa o objeto alocador que trata da alocação e da desalocação de memória da cadeia de caracteres.
charT
O tipo de dados de um único caractere a ser lido do fluxo e armazenado na cadeia de caracteres. A Biblioteca Padrão C++ oferece especializações desta classe de modelo, com as definições de tipo string
para elementos do tipo char
, wstring
, de wchar_t
, u16string
de char16_t
e u32string
de char32_t
.
traits
Descreve atributos charT
para a especialização basic_string
e basic_istream
.
Rep
O tipo de representação interna de um tipo duration
.
Period
Um tipo std::ratio
que representa a proporção de um segundo para o tipo de Rep
de origem (ou seja, segundos por Rep
).
Duration
O tipo duration
usado para especialização de tempo.
Parâmetros
abbrev
Se abbrev
não for nullptr
, e o %Z
do especificador de formato for especificado, e a análise for bem-sucedida, abbrev
conterá o valor analisado.
d
Se a análise for bem-sucedida, conterá o dia analisado quando a função retornar.
dur
O duration
analisado do fluxo.
fmt
A cadeia de caracteres de formato usada para corresponder à entrada. Consulte Cadeias de caracteres de formato para a lista de opções de formatação de análise.
ft
O file_time
analisado do fluxo.
gt
O gps_time
analisado do fluxo.
is
O fluxo de entrada a analisar.
lt
O local_time
analisado do fluxo.
m
O month
analisado do fluxo.
md
O month_day
analisado do fluxo.
offset
Se offset
não for nullptr
, e o %z
do especificador do formato ou variante modificada, como %Ez
ou %0z
, for especificada, e a análise for bem-sucedida, então offset
aponta para o valor analisado.
st
O sys_time
analisado do fluxo.
tt
O tai_time
analisado do fluxo.
ut
O utc_time
analisado do fluxo.
wd
O weekday
analisado do fluxo.
y
O year
analisado do fluxo.
ym
O year_month
analisado do fluxo.
ymd
O year_month_day
analisado do fluxo.
Valor retornado
O fluxo de entrada, is
Exemplo: from_stream
// compile using: /std:c++latest
#include <chrono>
#include <iostream>
int main()
{
std::istringstream str{ "22" };
std::basic_istream<char> stream{ str.rdbuf() };
std::chrono::day d;
std::chrono::from_stream(stream, "%d", d);
std::cout << d << "\n";
return 0;
}
22
Comentários
7) Se %Z
for usado e analisado com êxito, esse valor será atribuído a *abbrev
se abbrev
não for nulo. Se %z
(ou uma variante modificada) for usado e analisado com êxito, esse valor será atribuído a *offset
se offset
não for nulo.
12) Se %Z
for usado e analisado com êxito, esse valor será atribuído a *abbrev
se abbrev
não for nulo. Se %z
(ou uma variante modificada) for usado e analisado com êxito, esse valor será atribuído a *offset
se offset
não for nulo.
Cadeias de caracteres de formato from_stream
O formato pode ser uma destas cadeias de caracteres:
Data
Especificador | Descrição |
---|---|
%D |
Equivalente a %m/%d/%y |
%F % NF |
Equivalente a %Y-%m-%d . Se modificado com uma largura N , a largura será aplicada somente a %Y . |
%x %Ex |
A representação de data da localidade.%Ex analisa a representação de data alternativa da localidade.1 |
Dia
Especificador | Descrição |
---|---|
%d %Od % Nd %e %Oe % Ne |
O dia do mês como um número decimal.% Nd especifica o número máximo de caracteres a serem lidos, por exemplo %1d . Se N não for especificado, o padrão é 2.Zeros à esquerda são permitidos, mas não são necessários. %Od (letra O , não zero) interpreta a representação alternativa da localidade do dia do mês.1 %e é equivalente a %d e pode ser modificado como %d .1 |
Dia da semana
Especificador | Descrição |
---|---|
%a %A |
O nome completo ou abreviado do dia da semana sem distinção entre maiúsculas e minúsculas da localidade.%A é equivalente a %a |
%u % Nu |
O dia da semana ISO como um número decimal (1–7), em que segunda-feira é 1. % Nu especifica o número máximo de caracteres a serem lidos, por exemplo %2u . Se N não for especificado, o padrão é 1. Zeros à esquerda são permitidos, mas não são necessários. |
%w % Nw %Ow |
O dia da semana como número decimal (0–6), em que domingo é 0.% Nw especifica o número máximo de caracteres a serem lidos, por exemplo %2w . Se N não for especificado, o padrão é 1.Zeros à esquerda são permitidos, mas não são necessários. %Ow (letra O , não zero) interpreta a representação alternativa da localidade.1 |
Semana/dia do ano
Especificador | Descrição |
---|---|
%j % Nj |
Se o tipo que está sendo formatado for uma especialização de duração, o número decimal de dias sem preenchimento. Caso contrário, o dia do ano como um número decimal. Jan 1 é 001 . Se o resultado for menos de três dígitos, ele será adicionado à esquerda com 0 (zero) a três dígitos.% Nj especifica o número máximo de caracteres a serem lidos, por exemplo %2j . Se N não for especificado, o padrão é 3. Os dígitos principais são permitidos, mas não são necessários. |
%U % NU %OU |
O número da semana do ano como um número decimal. O primeiro domingo do ano é o primeiro dia da semana 01 . Os dias do mesmo ano antes dessa semana são 00 de semana. Se o resultado for um único dígito, ele será prefixado com 0 (zero).% NU especifica o número máximo de caracteres a serem lidos, por exemplo %2U . Se N não for especificado, o padrão é 2.Zeros à esquerda são permitidos, mas não são necessários. %OU (letra O , não zero) analisa a representação alternativa da localidade.1 |
%W % NW %OW |
O número da semana do ano como um número decimal. A primeira segunda-feira do ano é o primeiro dia da semana 01 . Os dias do mesmo ano antes dessa semana são 00 de semana.Se o resultado for um único dígito, ele será prefixado com 0 (zero).% NW especifica o número máximo de caracteres a serem lidos, por exemplo %2W . Se N não for especificado, o padrão é 1Zeros à esquerda são permitidos, mas não são necessários. %OW (letra O , não zero) analisa a representação alternativa da localidade.1 |
Hora do dia
Especificador | Descrição |
---|---|
%H % NH %OH |
A hora (relógio de 24 horas) como um número decimal. Se o resultado for um único dígito, ele será prefixado com um 0 (zero).% NH especifica o número máximo de caracteres a serem lidos, por exemplo, %1H . Se N não for especificado, o padrão é 2.Zeros à esquerda são permitidos, mas não são necessários. %OH (letra O , não zero) analisa a representação alternativa da localidade.1 |
%I % NI %OI |
A hora (relógio de 12 horas) como um número decimal. Se o resultado for um único dígito, ele será prefixado com 0 (zero).% NI especifica o número máximo de caracteres a serem lidos, por exemplo, %1I . Se N não for especificado, o padrão é 2.Zeros à esquerda são permitidos, mas não são necessários. %OI (letra O , não zero) analisa a representação alternativa da localidade.1 |
%M % NM %OM |
Os minutos como um número decimal. Se o resultado for um único dígito, ele será prefixado com 0 (zero).% NM especifica o número máximo de caracteres a serem lidos, por exemplo %3M . Se N não for especificado, o padrão é 2.Zeros à esquerda são permitidos, mas não são necessários. %OM (letra O , não zero) analisa a representação alternativa da localidade.1 |
%S % NS %OS |
Segundos como número decimal. Se o número de segundos for menor que 10, o resultado será prefixado com 0 (zero). Se a precisão da entrada não puder ser exatamente representada em segundos, o formato será um número de ponto flutuante decimal com um formato fixo. Ele terá uma precisão de microssegundos se a função não puder converter os segundos decimais de ponto flutuante em 18 dígitos fracionários. Caso contrário, sua precisão corresponde à da entrada. O caractere do ponto decimal é localizado de acordo com a localidade.% NS especifica o número máximo de caracteres a serem lidos, por exemplo %3S . Se N não for especificado, o padrão é 2.Zeros à esquerda são permitidos, mas não são necessários. %OS (letra O , não zero) analisa a representação alternativa da localidade.1 |
%p |
O equivalente da localidade às designações AM/PM associadas a um relógio de 12 horas. |
%r |
O relógio de 12 horas do local. |
%R |
Equivalente a %H:%M . |
%T |
Equivalente a "%H:%M:%S" . |
%X , %EX |
A representação de tempo da localidade.%EX analisa a representação de tempo da localidade alternativa.1 |
Mês
Especificador | Descrição |
---|---|
%b , %B , %h |
O nome completo ou abreviado do mês da localidade. Se o valor não contiver um mês válido, uma exceção format_error será gerada.%h é equivalente a %b . |
%m , % Nm , %Om |
O mês como número decimal. Jan é 1.% Nm especifica o número máximo de caracteres a serem lidos, por exemplo, %3m . Se N não for especificado, o padrão é 2.Zeros à esquerda são permitidos, mas não são necessários. %Om (letra O , não zero) interpreta a representação alternativa da localidade.1 |
Year
Especificador | Descrição |
---|---|
%C , % NC , %EC |
O século como um número decimal.% NC especifica o número máximo de caracteres a serem lidos, por exemplo, %1N . Se N não for especificado, o padrão é 2. Zeros à esquerda são permitidos, mas não são necessários.%EC interpreta a representação alternativa do século no local. |
%y , % Ny , %Ey , %Oy |
Os dois últimos dígitos digitais do ano. Se o século não for especificado de outra forma (por exemplo, usando %C ), os valores no intervalo [69, 99] devem se referir aos anos de 1969 a 1999, e os valores no intervalo [00, 68] devem se referir aos anos de 2000 a 2068.% Ny especifica o número máximo de caracteres a serem lidos. Se N não for especificado, o padrão é 2.Zeros à esquerda são permitidos, mas não são necessários. %Ey e %Oy (letra O , não zero) interpretam a representação alternativa da localidade.1 |
%Y , % NY , %EY , |
O ano como número decimal. Se o resultado for menos de quatro dígitos, ele será adicionado à esquerda com 0 (zero) a quatro dígitos.% NY especifica o número máximo de caracteres a serem lidos. Se N não for especificado, o padrão é 4.%EY analisa a representação alternativa de ano inteiro da localidade.1 |
Ano baseado em semana ISO 8601
Na ISO 8601, as semanas começam na segunda-feira. A primeira semana do ano precisa incluir 4 de janeiro e a primeira quinta-feira do ano.
Especificador | Substituição |
---|---|
%g % Ng |
Os dois últimos dígitos decimais do ano baseado em semana ISO. Se o resultado for um único dígito, será prefixado por 0 (zero). % Ng especifica o número máximo de caracteres a serem lidos, por exemplo, %1g . Se N não for especificado, o padrão é 2 |
%G % NG |
O ano baseado em semana ISO como um número decimal. Se o resultado for menos de quatro dígitos, ele será adicionado à esquerda com 0 (zero) a quatro dígitos. % NG especifica o número máximo de caracteres a serem lidos, por exemplo, %1G . Se N não for especificado, o padrão é 4 |
%V %OV % NV |
O número de semana baseado em ISO como um número decimal. Se o resultado for um único dígito, ele será prefixado com 0 (zero). % NV especifica o número máximo de caracteres a serem lidos, por exemplo, %1V . Se N não for especificado, o padrão é 2%OV (letra O , não zero) analisa a representação alternativa da localidade.1 |
Geral
Especificador | Substituição |
---|---|
%% |
Corresponde ao caractere |
%c %Ec |
A representação de data e hora da localidade.%Ec Interpreta a representação de data e hora alternativas da localidade.1 |
%n |
Corresponde a um caractere de nova linha |
%t |
Corresponde a zero ou um caractere de espaço em branco |
%z %Ez %Oz |
O deslocamento de UTC no formato [+|-]hh[mm] . Por exemplo, -0430 refere-se a 4 horas e 30 minutos atrás do UTC e 04 refere-se a 4 horas à frente do UTC.%Ez e %Oz (letra O , não zero) analisam um : entre as horas e os minutos e renderizam zeros à esquerda no campo de hora opcional1: [+|-]h[h][:mm] . Por exemplo, -04:30 refere-se a 4 horas e 30 minutos atrás do UTC e 4 refere-se a 4 horas à frente do UTC. |
%Z |
A abreviação ou o nome do fuso horário. Uma única palavra é analisada. Essa palavra só pode conter caracteres alfanuméricos do conjunto de caracteres de origem básico, ou um de _ , / , - ou + . |
Sinalizadores por tipo
Classe | Especificador/Sinalizador |
---|---|
day |
d, e |
duration |
j, H, I, M, S, r, R, T, p, (q, Q são apenas para formato, não análise) |
file_time |
Z, z, c, x, X, D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w, H, I, M, S, r, R, T, p |
gps_time |
Z, z, c, x, X, D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w, H, I, M, S, r, R, T, p |
hh_mm_ss |
H, I, M, S, r, R, T, p |
local_time |
c, x, X, D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w, H, I, M, S, r, R, T, p |
local_time_format_t |
z, Z, c, x, X, D, F, Y, C, y, b, B, h, m, d, e, a, A, u, w, H, I, M, S, r, R, T, p, g, G, U, V, W |
local_info |
z, Z |
month |
b, h, B, m |
month_day |
B, d, j, e, b, h, m |
month_day_last |
B, d, j, e, b, h, m |
month_weekday |
b, B, h, m, a, A, u, w |
month_weekday_last |
b, B, h, m, a, A, u, w |
sys_info |
z, Z |
sys_time |
Z, z, c, x, X, D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w, H, I, M, S, r, R, T, p |
tai |
Z, z, c, x, X, D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w, H, I, M, S, r, R, T, p |
utc_time |
Z, z, c, x, X, D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w, H, I, M, S, r, R, T, p |
weekday |
a, A, u, w |
weekday_indexed |
a, A, u, w |
weekday_last |
a, A, u, w |
year |
Y, y, C |
year_month |
Y, y, B, g, G, h, C, b, m |
year_month_day |
D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w |
year_month_day_last |
D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w |
year_month_weekday |
D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w |
year_month_weekday_last |
D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w |
zoned_time |
z, Z, c, x, X, D, F, Y, C, y, b, B, h, m, d, e, a, A, u, w, H, I, M, S, r, R, T, p, g, G, U, V, W |
1No momento, a implementação é consistente com strftime, pois, embora O
(letra O) e e
sejam aceitos, eles são ignorados. Ou seja, "%Od"
é interpretado como "%d"
.
get_leap_second_info
Retorna um leap_second_info
para o tempo especificado. Isso fornece informações sobre se o tempo fornecido ocorre durante uma inserção de segundo bissexto. Ele também fornece o número de segundos bissextos que foram adicionados entre 1º de janeiro de 1970 e o tempo especificado. Uma segunda inserção bissexto ocorre quando o Serviço Internacional de Rotação e Sistemas de Referência da Terra (IERS) declara que um segundo bissexto será adicionado (resultando em um minuto de 61 segundos) para considerar a diferença entre o tempo atômico e o tempo rastreado medindo a rotação da Terra, que é irregular, e está gradualmente diminuindo.
Sintaxe
template<class Duration>
leap_second_info
get_leap_second_info(const utc_time<Duration>& ut); // C++20
Parâmetros
ut
A origem utc_time
a ser usada leap_second_info
.
Valor retornado
Retorna um leap_second_info
cujo membro is_leap_second
é true
se ut
estiver durante uma inserção positiva de segundo salto; caso contrário, false
. O elapsed
membro contém a soma dos segundos bissextos entre a data 1970-01-01
da época e ut
. Se is_leap_second
for true
, o segundo bissexto referenciado por ut
é incluído na soma elapsed
.
get_tzdb
Obtém a primeira entrada na lista de bancos de dados de fuso horário de todo o programa.
Sintaxe
const tzdb& get_tzdb(); // C++20
Valor retornado
Retorna uma referência ao primeiro objeto tzdb
como se por uma chamada para get_tzdb_list().front()
. Ele gera uma exceção de runtime_error
se for a primeira referência ao banco de dados de fuso horário e o banco de dados de fuso horário não puder ser inicializado.
Comentários
Se ainda não tiver sido inicializado, get_tzdb
inicializará o banco de dados de fuso horário em todo o programa no primeiro acesso. Após a inicialização, o banco de dados é um tzdb_list
que contém um único objeto tzdb
inicializado.
get_tzdb_list
Obtém o banco de dados de fuso horário singleton em todo o programa.
Sintaxe
tzdb_list& get_tzdb_list(); // C++20
Valor retornado
Retorna uma referência ao objeto tzdb_list
de todo o programa. Ele gerará uma exceção runtime_error
se não puder retornar uma referência a um objeto tzdb_list
válido.
Comentários
Se ainda não tiver sido inicializado, get_tzdb_list
inicializará o banco de dados de fuso horário em todo o programa no primeiro acesso. Após a inicialização, o banco de dados é um tzdb_list
que contém um único objeto tzdb
inicializado. A função get_tzdb_list
é thread-safe.
is_am
Predicado para saber se a hora especificada está na parte ante-meridiem (AM) do dia.
Sintaxe
constexpr bool is_am(const hours& h) noexcept; // C++20
Parâmetros
h
A representação de hours
de origem na notação de tempo de 24 horas.
Valor retornado
Retorna true
se 0h <= h && h <= 11h
; caso contrário false
.
is_pm
Predicado para saber se a hora especificada está na parte post-meridiem (PM) do dia.
Sintaxe
constexpr bool is_pm(const hours& h) noexcept; // C++20
Parâmetros
h
A representação de hours
de origem na notação de tempo de 24 horas.
Valor retornado
Retorna true
se 12h <= h && h <= 23h
; caso contrário false
.
locate_zone
Obtém um objeto de fuso horário especificado pelo nome do fuso horário.
Sintaxe
const time_zone* locate_zone(string_view tz_name); // C++20
Parâmetros
tz_name
O nome do fuso horário a ser retornado.
Valor retornado
Retorna um ponteiro para um time_zone
como se por uma chamada para get_tzdb().locate_zone(tz_name)
. Ele gera uma exceção de runtime_error
se não puder encontrar o fuso horário especificado, ou se for a primeira referência ao banco de dados de fuso horário e o banco de dados de fuso horário não puder ser inicializado.
Comentários
Se ainda não tiver sido inicializado, locate_zone
inicializará o banco de dados de fuso horário em todo o programa no primeiro acesso. Após a inicialização, o banco de dados é um tzdb_list
que contém um único objeto tzdb
inicializado.
make12
Retorna a hora especificada em notação de tempo de 12 horas.
Sintaxe
constexpr hours make12(const hours& h) noexcept; // C++20
Parâmetros
h
A representação de hours
de origem na notação de tempo de 24 horas.
Valor retornado
Retorna o equivalente de 12 horas de h
no intervalo [1h, 12h]
. O valor retornado não será especificado se h
não estiver no intervalo [0h, 23h]
.
make24
Retorna a hora especificada em notação de tempo de 24 horas.
Sintaxe
constexpr hours make24(const hours& h, bool is_pm) noexcept; // C++20
Parâmetros
h
A representação de hours
de origem na notação de tempo de 12 horas.
is_pm
A representação de origem hours
é PM (se true
) ou AM (se false
).
Valor retornado
Se is_pm
for false
, make24
retorna o equivalente de 24 horas de h
no intervalo [0h, 11h]
, supondo que h
represente uma hora AM. Caso contrário, ele retorna o equivalente de 24 horas de h
no intervalo [12h, 23h]
, supondo que h
represente uma hora PM. O valor retornado não será especificado se h
não estiver no intervalo [1h, 12h]
.
reload_tzdb
Recarrega o banco de dados de fuso horário se as informações atualizadas estiverem disponíveis.
Sintaxe
const tzdb& reload_tzdb();
Valor retornado
Depois que ele atualiza o banco de dados de fuso horário, se houver, reload_tzdb
retorna uma referência ao primeiro objeto tzdb
como se fosse por uma chamada para get_tzdb_list().front()
. Ele gerará uma exceção runtime_error
se não puder retornar uma referência a um objeto tzdb
válido.
Comentários
O banco de dados de fuso horário local é aquele fornecido quando o programa acessa o banco de dados pela primeira vez, como por uma chamada para current_zone
. Enquanto o programa está em execução, a implementação pode atualizar o banco de dados de fuso horário. A atualização não afeta o programa de forma alguma, a menos que o programa chame a função reload_tzdb
. O banco de dados de fuso horário potencialmente atualizado é chamado de banco de dados de fuso horário remoto.
A função reload_tzdb
verifica a versão do banco de dados de fuso horário local e do banco de dados de fuso horário remoto. Se as versões dos bancos de dados locais e remotos forem as mesmas, ela não fará alterações. Caso contrário, o banco de dados remoto será enviado por push para a frente do tzdb_list
acessado por get_tzdb_list
. Uma atualização não invalida ponteiros, referências ou iteradores. A função reload_tzdb
é thread-safe para chamadas a get_tzdb_list().front()
e get_tzdb_list().erase_after()
.
remote_version
Obtém uma cadeia de caracteres que contém a versão mais recente do banco de dados remoto.
Sintaxe
string remote_version();
Valor retornado
Retorna um string
que contém a versão mais recente do banco de dados remoto.
round(duration)
Arredonda o duration
especificado para o duration
representável mais próximo no tipo de destino.
Sintaxe
template<class ToDuration, class Rep, class Period>
constexpr ToDuration
round(const duration<Rep, Period>& d); // C++17
Parâmetros
ToDuration
O tipo duration
de destino. Restrito como uma especialização de duration
em que treat_as_floating_point_v<typename ToDuration::rep>
é false
.
Rep
O tipo de representação interna da fonte duration
d
.
Period
Um tipo std::ratio
que representa a proporção de um segundo para o tipo de Rep
de origem (ou seja, segundos por Rep
).
d
O objeto de origem duration
.
Valor retornado
Retorna o representável duration
mais próximo no ToDuration
ao parâmetro d
. Os laços vão para o valor par, ou seja, o valor t
onde t % 2 == 0
.
Comentários
round
não participa da resolução de sobrecarga, a menos que o tipo ToDuration
seja uma instância de um duration
e ToDuration
tenha uma representação integral.
round(time_point)
Retorna o ponto de tempo mais próximo representável no destino duration
para o ponto de tempo especificado.
template<class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
round(const time_point<Clock, Duration>& tp);
Parâmetros
ToDuration
O tipo duration
de destino. Restrito como uma especialização de duration
em que treat_as_floating_point_v<typename ToDuration::rep>
é false
.
Clock
O tipo de relógio comum do resultado e o tp
do parâmetro de origem.
Duration
O tipo duration
de tp
.
tp
O objeto de origem time_point
.
Valor retornado
Retorna o ponto de tempo mais próximo que pode ser representado usando ToDuration
para tp
. Os laços vão para o valor par, ou seja, o valor t
onde t % 2 == 0
. Efetivamente, time_point<Clock, ToDuration>(round<ToDuration>(tp.time_since_epoch()));
.
Comentários
round
não participa da resolução de sobrecarga, a menos que o tipo ToDuration
seja uma instância de um duration
.
time_point_cast
Converte um objeto time_point
em um time_point
que tem um tipo duration
diferente.
Sintaxe
template <class ToDuration, class Clock, class Duration>
time_point<Clock, ToDuration>
time_point_cast(const time_point<Clock, Duration>& tp); // C++11
Parâmetros
ToDuration
O tipo duration
de destino. Restrito como uma especialização de duration
.
Clock
O tipo de relógio comum do resultado e o tp
do parâmetro de origem.
Duration
O tipo duration
de tp
.
tp
O objeto time_point
a ser convertido em um que tenha o tipo ToDuration
.
Valor retornado
Retorna um objeto time_point
que tenha um tipo ToDuration
. Efetivamente, time_point<Clock, ToDuration>(duration_cast<ToDuration>(t.time_since_epoch()));
.
Comentários
A menos que ToDuration
seja uma especialização de duration
, essa função não participa da resolução de sobrecarga.
Confira também
<chrono>
Literais chrono
Operadores chrono
duration
classe
time_point
classe
time_zone
classe