2010-09-13 5 views
5

Je souhaite que QDateTime remplace l'opérateur - et renvoie un QTimeSpan représentant la différence entre deux QDateTimes (tout comme TimeSpan de .NET). Comme cela n'existe pas dans Qt, j'ai décidé de l'implémenter.Comment obtenir la différence entre deux QDateTimes en millisecondes?

Malheureusement, QDateTime n'a pas de fonction similaire à msecsTo. Quelle est la manière la plus propre d'obtenir la différence entre deux QDateTimes précis à la milliseconde?

Répondre

7

J'utiliserais probablement a.daysTo(b)*1000*60*60*24 + a.time().msecsTo(b.time()). Notez que vous devez regarder à quel point vous pouvez être proche, car vous allez déborder votre type de données assez rapidement.

1

que diriez-vous:

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

Source

+0

Mais cela ignore complètement la partie date. –

5

Je me rends compte que cette question est à partir de 2010, et que Qt 4.7 n'existait pas à l'époque (il est sorti en fait environ une semaine après cette question a été initialement demandé - Septembre 21 2010), mais pour les personnes qui cherchent comment faire maintenant:

Depuis Qt 4.7, QDateTime a une méthode "msecsTo". Voir la documentation Qt 4.8 au 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 
+1

Je voudrais inclure les détails du lien fourni dans le cadre de votre réponse, sinon, il est susceptible d'être fermé comme un lien réponse seulement – drneel

+0

Merci, drneel. J'ai ajouté un échantillon de code à ma réponse. –

Questions connexes