Qt документация о QTime::currentTime()
говорит:
Обратите внимание, что точность зависит от точности основного
операционная система; не все системы обеспечивают точность в 1 миллисекунду.
Но есть ли способ получить это время с точностью до миллисекунд в Windows 7?
Разрешение таймера может отличаться на разных платформах, и показания могут быть неточными. Если вам нужно получить точные временные метки в Windows 7 с высоким разрешением, он предоставляет QPC API:
https://msdn.microsoft.com/en-us/library/windows/desktop/dn553408%28v=vs.85%29.aspx
GetSystemTimePreciseAsFileTime
как утверждается, для обеспечения системного времени <Разрешение 1us.
Но это только о точной отметке времени. Если вам нужно что-то сделать с задержкой в 1 мс (например, обработать событие), вам нужна ОСРВ, а не настольный компьютер.
Одним из распространенных способов было бы увеличить масштаб того, что вы делаете, и делать это 10-100 раз подряд, чтобы вы могли получить более точное считывание времени того, что вы делаете, поделив результат на 10-100.
Но получение точных миллисекундных показаний вашего времени в значительной степени бесполезно, потому что у вас нет 100% времени процессора, что означает, что ваши показания будут иметь гораздо большую дисперсию, чем всего 1 миллисекунда, если ОС дает другое вычислительное время процесса, пока вы делать свои действия.
Вы можете использовать функциональность, предоставляемую заголовочным файлом time.h в C / C ++.
#include <time.h>
clock_t start, end;
double cpu_time_used;
int main()
{
start = clock();
/* Do the work. */
end = clock();
cpu_time_used = ((double)(end-start)/ CLOCKS_PER_SEC);
}
Ты можешь использовать QDateTime
Класс и преобразовать текущее время в соответствующий формат:
QDateTime::currentDateTime().toString("yyyy/MM/dd hh:mm:ss,zzz")
где ‘Z‘соответствует точности в миллисекундах.