Как я могу отформатировать продолжительность с помощью std::println?C++

Программы на C++. Форум разработчиков
Anonymous
Как я могу отформатировать продолжительность с помощью std::println?

Сообщение Anonymous »

После запуска этой программы

(скомпилировано компилятором MSVC 19.50.35723 с опцией /std:c++23preview)

Код: Выделить всё

#include 
#include 
#include 
int main() {
using namespace std::chrono;
system_clock::time_point tp1;
system_clock::time_point tp2;

std::string y1 = "01.01.2024";
std::string y2 = "01.01.2025";

std::istringstream is1{ y1.data() };
is1 >> parse("%d.%m.%Y", tp1);
std::istringstream is2{ y2.data() };
is2 >> parse("%d.%m.%Y", tp2);

std::println("{}", tp1);
std::println("{}", tp2);

auto duration = duration_cast(tp2 - tp1);
std::println("duration: {} year(s)", duration);

return 0;
}
Я получил следующий результат:

Код: Выделить всё

2024-01-01 00:00:00.0000000
2025-01-01 00:00:00.0000000
duration: 1[31556952]s year(s)
Я ожидал, что продолжительность составит ровно 1 год без долей секунды. Может ли кто-нибудь мне помочь?


Подробнее здесь: https://stackoverflow.com/questions/798 ... stdprintln

Вернуться в «C++»