Функция duration_cast
Функция duration_cast выполняет явное преобразование
объекта duration из одного типа в другой. В параметр
шаблона мы передаем целевой тип длительности (например, seconds,
milliseconds, minutes), а в качестве аргумента
функции - исходный объект duration. Преобразование
выполняется с усечением дробной части, то есть округление
происходит в сторону нуля.
Синтаксис
std::chrono::duration_cast<ToDuration>(d)
Пример
Давайте переведем 1500 миллисекунд в секунды.
Так как в одной секунде 1000 миллисекунд, дробная
часть будет отброшена:
#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
int main()
{
milliseconds ms(1500);
seconds sec = duration_cast<seconds>(ms);
cout << sec.count() << endl;
return 0;
}
Результат выполнения кода:
1
Пример
Давайте переведем 3600 секунд в минуты и часы:
#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
int main()
{
seconds sec(3600);
minutes min = duration_cast<minutes>(sec);
hours h = duration_cast<hours>(sec);
cout << min.count() << endl;
cout << h.count() << endl;
return 0;
}
Результат выполнения кода:
60
1
Пример
Давайте переведем 2 часа в миллисекунды.
При расширении типа данные не теряются:
#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
int main()
{
hours h(2);
milliseconds ms = duration_cast<milliseconds>(h);
cout << ms.count() << endl;
return 0;
}
Результат выполнения кода:
7200000
Смотрите также
-
класс
duration,
который представляет интервал времени -
метод
count,
который возвращает количество тиков -
функция
seconds,
которая создает длительность в секундах -
функция
milliseconds,
которая создает длительность в миллисекундах