Estou tentando formatar um std::chrono::duration
objeto no formato HH:MM::SS, por exemplo, 16:42:02 sendo as horas (16), os minutos (42) e os segundos (2).
a biblioteca fmt
oferece especificadores de formatação úteis para isso:
using namespace std::chrono;
auto start = high_resolution_clock::now();
auto end = start + 4s;
fmt::print("{:%H:%M:%S} \n", end);
que infelizmente imprime os segundos em decimais
16:58:55.359425076
Quero arredondar para o número inteiro mais próximo, mas não consigo descobrir onde colocar o especificador de precisão (precisão 2 apenas em termos de teste):
fmt::print("{:.2%H:%M:%S} \n", end); // error
fmt::print("{:.2f%H:%M:%S} \n", end); // error
fmt::print("{:%H:%M:.2%S} \n", end); // nonsense: 17:07:.202.454873454
Estou um pouco perdido olhando para os detalhes da especificação do formato do cronômetro...
Um exemplo de explorador de compilador acima está aqui .