如何获得两个QDateTimes之间的差异,以毫秒为单位?

Jak*_*les 6 qt qt4

我希望QDateTime覆盖 - 运算符并返回一个QTimeSpan,表示两个QDateTimes之间的差异(就像.NET的TimeSpan一样).由于Qt中不存在,我决定实现它.

不幸的是,QDateTime没有msecsTo类似功能.将两个QDateTime之间的差异精确到毫秒的最简洁方法是什么?

小智 17

我意识到这个问题是从2010年开始的,当时Qt 4.7并不存在(它实际上是在这个问题最初被问到 - 2010年9月21日后的一周内出现的),但对于那些正在寻找怎么做的人来说现在这个:

从Qt 4.7开始,QDateTime有一个"msecsTo"方法.请参阅http://doc.qt.io/qt-4.8/qdatetime.html#msecsTo上的 Qt 4.8文档.

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
Run Code Online (Sandbox Code Playgroud)

  • 我会在回答中提供链接中提供的详细信息,否则可能会将其作为仅链接答案关闭 (2认同)
  • Stackoverflow - 社区需要有一种方法来更新已接受的答案,因为随着时间的推移,答案可能会因更新版本的软件、新方法等而发生变化。这应该是目前公认的答案,直到 QT 将来改变某些内容。我对这个投了赞成票。 (2认同)

jke*_*ian 7

我可能会用a.daysTo(b)*1000*60*60*24 + a.time().msecsTo(b.time()).请注意,您需要观察自己的距离,因为您将很快地溢出数据类型.