2010-09-13 16 views
5

Chciałbym, aby QDateTime przeważyło operatora - i zwróciło QTimeSpan reprezentujący różnicę między dwoma QDateTimes (podobnie jak TimeSpan .NET). Ponieważ nie istnieje w Qt, zdecydowałem się go wdrożyć.Jak uzyskać różnicę między dwoma QDateTimes w milisekundach?

Niestety, QDateTime nie ma funkcji podobnej do msecsTo. Jaki jest najczystszy sposób, aby uzyskać różnicę między dwoma QDateTimes z dokładnością do milisekundy?

Odpowiedz

7

Prawdopodobnie użyłbym a.daysTo(b)*1000*60*60*24 + a.time().msecsTo(b.time()). Pamiętaj, że musisz obserwować, jak blisko jesteś, ponieważ szybko przepełnisz typ danych.

1

jak o tym:

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

Source

+0

Ale to całkowicie zignoruje datę. –

5

Zdaję sobie sprawę, że to pytanie jest od 2010 roku, i że Qt 4.7 nie istniał wtedy (to faktycznie wyszedł około tygodnia po tym pytaniu pierwotnie zapytano - 21 września 2010 r.), ale dla osób, które szukają teraz tego sposobu:

Począwszy od Qt 4.7, QDateTime ma metodę "msecsTo". Zobacz dokumentację Qt 4.8 pod adresem 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

Chciałbym dołączyć szczegóły z linku podanego jako część twojej odpowiedzi, w przeciwnym razie jest to prawdopodobnie zamknięte jako odpowiedź tylko link – drneel

+0

Dzięki, drneel. Dodałem próbkę kodu do mojej odpowiedzi. –

Powiązane problemy