2010-09-13 52 views
5

我希望QDateTime覆蓋 - 運算符並返回一個表示兩個QDateTime之間差異的QTimeSpan(就像.NET的TimeSpan一樣)。由於這在Qt中不存在,我決定實現它。如何獲得兩個QDateTimes之差(以毫秒爲單位)?

不幸的是,QDateTime沒有msecsTo類似的功能。將兩個QDateTime之間的差異精確到毫秒的最簡潔的方法是什麼?

回答

7

我可能會使用a.daysTo(b)*1000*60*60*24 + a.time().msecsTo(b.time())。請注意,您需要注意自己有多接近,因爲您將很快溢出數據類型。

1

這個怎麼樣:

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

Source

+0

但是,這將完全忽略日期部分。 – 2010-09-13 20:43:49

5

我意識到,這個問題是來自2010年,而Qt的4.7不存在當時(它實際上這個問題出來後大約一個星期最初被問 - 2010年9月21日),但對於正在尋找如何做到這一點的人:

從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 
+1

我會從您提供答案的一部分提供的鏈接中包含詳細信息,否則這可能會被作爲鏈接關閉僅回答 – drneel 2016-03-24 16:00:04

+0

謝謝,drneel。我在我的答案中添加了一個代碼示例。 – 2016-03-24 16:10:54

相關問題