Как получить разницу между двумя QDateTimes в миллисекундах? - PullRequest
6 голосов
/ 14 сентября 2010

Я бы хотел, чтобы QDateTime отверг оператор - и возвратил QTimeSpan, представляющий разницу между двумя QDateTimes (точно так же, как TimeSpan .NET). Поскольку этого нет в Qt, я решил реализовать это.

К сожалению, QDateTime не имеет msecsTo -подобной функции. Какой самый чистый способ получить разницу между двумя QDateTimes с точностью до миллисекунды?

Ответы [ 3 ]

13 голосов
/ 24 марта 2016

Я понимаю, что этот вопрос относится к 2010 году, и что Qt 4.7 тогда не существовало (фактически он вышел примерно через неделю после того, как этот вопрос был первоначально задан - 21 сентября 2010 года), но для людей, которые ищут как это сделать сейчас:

Начиная с Qt 4.7, в QDateTime есть метод "msecsTo". Смотрите документацию Qt 4.8 по http://doc.qt.io/qt-4.8/qdatetime.html#msecsTo.

QDateTime dateTime1 = QDateTime::currentDateTime();
// let's say exactly 5 seconds pass here...
QDateTime dateTime2 = QDateTime::currentDateTime();
qint64 millisecondsDiff = dateTime1.msecsTo(dateTime2);
// millisecondsDiff is equal to 5000
7 голосов
/ 14 сентября 2010

Я бы, наверное, использовал a.daysTo(b)*1000*60*60*24 + a.time().msecsTo(b.time()).Обратите внимание, что вам нужно следить за тем, насколько близко вы можете быть, поскольку вы собираетесь довольно быстро переполнить ваш тип данных.

1 голос
/ 14 сентября 2010

как насчет этого:

QDateTime a = QDateTime::currentDateTime();
QDateTime b = a.addMSecs( 1000 );
qDebug( "%d", a.time().msecsTo( b.time() ) );

Источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...