2015-07-27 2 views
7

Как я могу (используя библиотеку std :: chrono) разницу между двумя точками во времени в миллисекундах?Chrono - Разница между двумя точками во времени в миллисекундах?

я мог бы сделать это с помощью этого:

std::chrono::time_point<std::chrono::system_clock> now = std::chrono::system_clock::now(); 

std::chrono::time_point<std::chrono::system_clock> foo = now + std::chrono::milliseconds(100); 

std::chrono::duration<float> difference = foo - now; 

const int milliseconds = difference.count() * 1000; 

Как я могу получить это время в миллисекундах, так что я могу использовать длительность как беззнаковое Int, а не поплавок, а затем умножить на 1000?

+3

Мне потребовалось пять секунд, чтобы google это: 'chrono :: duration_cast (end_time - start_time) .count()' – zoska

ответ

13

std::chrono::duration имеет два параметра шаблона, а второе в точности единицу измерения. Вы можете вызывать std::chrono::duration_cast для перевода из одного типа продолжительности в другой. Кроме того, существует предопределенный тип продолжительности для миллисекунд: std::chrono::milliseconds. Сочинение это вместе:

auto milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(foo - now); 

Чтобы ген фактического количества миллисекунд, используйте duration::count:

auto ms = milliseconds.count(); 

Его возвращаемый типа duration::rep, который для стандартных типов длительности, как std::chrono::milliseconds является знаковым целым неопределенного размера.

2
chrono::duration_cast<chrono::milliseconds>(end_time - start_time).count()