Приведение длительности в C++
Шаг тика меняет duration_cast, сохраняя длину интервала.
Если новый тик шире старого, дробная часть не сохраняется: для отрицательных значений результат сдвигается к нулю, а не к минус бесконечности. Запишем секунды, приведем к минутам и выведем счетчик:
#include <chrono>
#include <iostream>
std::chrono::seconds span{125};
std::chrono::minutes as_min =
std::chrono::duration_cast<std::chrono::minutes>(span);
std::cout << as_min.count() << "\n";
Для 125 секунд получится 2 минуты,
потому что 2 минуты покрывают 120
секунд, а оставшиеся секунды отбрасываются
при смене единицы.
Объявите std::chrono::seconds gap
со значением 200. Приведите gap
к std::chrono::minutes и выведите
count.
Запишите std::chrono::seconds back
равным -95. Переведите в
std::chrono::minutes через
std::chrono::duration_cast и выведите
счетчик минут.