我希望QDateTime覆蓋 - 運算符並返回一個表示兩個QDateTime之間差異的QTimeSpan(就像.NET的TimeSpan一樣)。由於這在Qt中不存在,我決定實現它。如何獲得兩個QDateTimes之差(以毫秒爲單位)?
不幸的是,QDateTime沒有msecsTo
類似的功能。將兩個QDateTime之間的差異精確到毫秒的最簡潔的方法是什麼?
我希望QDateTime覆蓋 - 運算符並返回一個表示兩個QDateTime之間差異的QTimeSpan(就像.NET的TimeSpan一樣)。由於這在Qt中不存在,我決定實現它。如何獲得兩個QDateTimes之差(以毫秒爲單位)?
不幸的是,QDateTime沒有msecsTo
類似的功能。將兩個QDateTime之間的差異精確到毫秒的最簡潔的方法是什麼?
我可能會使用a.daysTo(b)*1000*60*60*24 + a.time().msecsTo(b.time())
。請注意,您需要注意自己有多接近,因爲您將很快溢出數據類型。
這個怎麼樣:
QDateTime a = QDateTime::currentDateTime();
QDateTime b = a.addMSecs(1000);
qDebug("%d", a.time().msecsTo(b.time()));
我意識到,這個問題是來自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
我會從您提供答案的一部分提供的鏈接中包含詳細信息,否則這可能會被作爲鏈接關閉僅回答 – drneel 2016-03-24 16:00:04
謝謝,drneel。我在我的答案中添加了一個代碼示例。 – 2016-03-24 16:10:54
但是,這將完全忽略日期部分。 – 2010-09-13 20:43:49