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 da representação interna do durationd de origem.

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 .

Retornar valor

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 da representação interna do durationd de origem.

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 .

Retornar valor

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 .

Retornar valor

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.

Retornar valor

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_clocke 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

Retornar valor

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 da representação interna do durationd de origem.

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.

Retornar valor

Um objeto do tipo ToDuration que representa o durationd. 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 da representação interna do durationd de origem.

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 .

Retornar valor

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 .

Retornar valor

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.

Retornar valor

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 do local 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 do local.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.
%Njespecifica 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 é 1
Zeros à 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 A localidade é equivalente à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 do local.
%EX analisa a representação de tempo da localidade alternativa.1

Mensal

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 do local.1

Ano

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 do local.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 do ano inteiro do local.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
Representação de data e hora da localidade.
%Ec interpreta a representação alternativa de data e hora 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.

Retornar valor

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 membro elapsed contém a soma de segundos bissextos entre a data da época 1970-01-01 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

Retornar valor

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

Retornar valor

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.

Retornar valor

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.

Retornar valor

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.

Retornar valor

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.

Retornar valor

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).

Retornar valor

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();

Retornar valor

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();

Retornar valor

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 da representação interna do durationd de origem.

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 .

Retornar valor

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 .

Retornar valor

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.

Retornar valor

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