diff options
author | Mitch Curtis <mitch.curtis@nokia.com> | 2012-07-31 11:34:43 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-08-21 11:05:20 +0200 |
commit | 3a7b6a74a8b36d98d57f4ec73b7e57f14911a775 (patch) | |
tree | 33418fbea83234a3c54b6739b073adf578b275c6 | |
parent | 718a2251be2d32f96befef1ec23912c1a2ce3e34 (diff) |
Disregard milliseconds in QTime::secsTo().
"The documentation states that "secsTo() does not take into account any
milliseconds", however, this is not the case. Given times 12:30:01.500
and 12:30:02.400 secsTo returns 0. If milliseconds are not taken into
account, I would expect this to return 1 (i.e. interprets the times as
12:30:01 and 12:30:02 thus truncating the milliseconds)."
Note that tests were also written for QDateTime::secsTo(), as it uses
QTime::secsTo internally. This addresses Javier's issue in the
comments of QTBUG-9304.
Task-number: QTBUG-9304
Change-Id: I9efe0c8f710db859c1d086d67ba3e5b349a56c4e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r-- | src/corelib/tools/qdatetime.cpp | 5 | ||||
-rw-r--r-- | tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp | 8 | ||||
-rw-r--r-- | tests/auto/corelib/tools/qtime/tst_qtime.cpp | 4 |
3 files changed, 16 insertions, 1 deletions
diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 3324408fde..fe5389514b 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -1655,7 +1655,10 @@ int QTime::secsTo(const QTime &t) const if (!isValid() || !t.isValid()) return 0; - return (t.ds() - ds()) / 1000; + // Truncate milliseconds as we do not want to consider them. + int ourSeconds = ds() / 1000; + int theirSeconds = t.ds() / 1000; + return theirSeconds - ourSeconds; } /*! diff --git a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp index 70b761f705..0c018d7cce 100644 --- a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp +++ b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp @@ -895,6 +895,14 @@ void tst_QDateTime::daysTo() void tst_QDateTime::secsTo_data() { addSecs_data(); + + QTest::newRow("disregard milliseconds #1") + << QDateTime(QDate(2012, 3, 7), QTime(0, 58, 0, 0)) << 60 + << QDateTime(QDate(2012, 3, 7), QTime(0, 59, 0, 400)); + + QTest::newRow("disregard milliseconds #2") + << QDateTime(QDate(2012, 3, 7), QTime(0, 59, 0, 0)) << 60 + << QDateTime(QDate(2012, 3, 7), QTime(1, 0, 0, 400)); } void tst_QDateTime::secsTo() diff --git a/tests/auto/corelib/tools/qtime/tst_qtime.cpp b/tests/auto/corelib/tools/qtime/tst_qtime.cpp index 9a49dac785..a747b1b91d 100644 --- a/tests/auto/corelib/tools/qtime/tst_qtime.cpp +++ b/tests/auto/corelib/tools/qtime/tst_qtime.cpp @@ -305,6 +305,10 @@ void tst_QTime::secsTo_data() QTest::newRow( "data4" ) << QTime(-1, -1, -1) << QTime(0, 0, 0) << 0; QTest::newRow( "data5" ) << QTime(0, 0, 0) << QTime(-1, -1, -1) << 0; QTest::newRow( "data6" ) << QTime(-1, -1, -1) << QTime(-1, -1, -1) << 0; + QTest::newRow("disregard msec (1s)") << QTime(12, 30, 1, 500) << QTime(12, 30, 2, 400) << 1; + QTest::newRow("disregard msec (0s)") << QTime(12, 30, 1, 500) << QTime(12, 30, 1, 900) << 0; + QTest::newRow("disregard msec (-1s)") << QTime(12, 30, 2, 400) << QTime(12, 30, 1, 500) << -1; + QTest::newRow("disregard msec (0s)") << QTime(12, 30, 1, 900) << QTime(12, 30, 1, 500) << 0; } void tst_QTime::secsTo() |