2010-09-13 15 views
5

Deseo que QDateTime anule el operador - y haya devuelto un QTimeSpan que representa la diferencia entre dos QDateTimes (al igual que TimeSpan de .NET). Como esto no existe en Qt, decidí implementarlo.¿Cómo obtener la diferencia entre dos QDateTimes en milisegundos?

Desafortunadamente, QDateTime no tiene función de tipo msecsTo -like. ¿Cuál es la forma más limpia de obtener la diferencia entre dos QDateTimes con precisión de milisegundos?

Respuesta

7

Probablemente usaría a.daysTo(b)*1000*60*60*24 + a.time().msecsTo(b.time()). Tenga en cuenta que necesita ver qué tan cerca puede estar, ya que va a desbordar su tipo de datos con bastante rapidez.

1

¿qué tal esto:

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

Source

+0

Pero eso ignorará por completo la parte de la fecha. –

5

Soy consciente de que esta pregunta es a partir de 2010, y que Qt 4.7 no existía en ese entonces (que en realidad salió una semana después de esta pregunta se le preguntó originalmente - 21 de septiembre de 2010), pero para las personas que están buscando cómo hacerlo ahora:

A partir de Qt 4.7, QDateTime tiene un método "msecsTo". Consulte la documentación de Qt 4.8 en 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

Incluiría los detalles del enlace proporcionado como parte de su respuesta, de lo contrario, es probable que se cierre como un enlace solo responda – drneel

+0

Gracias, drneel. He agregado una muestra de código a mi respuesta. –

Cuestiones relacionadas