Как я могу отформатировать продолжительность с помощью 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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