Don't use default-constructed QTime() where QTime(0, 0) is intended

QTime() is invalid. Only the seconds and milliseconds are optional,
for valid times. Use startOfDay() for zoned times, QTime(0, 0) for
fixed-offset ones.

Change-Id: I3b65d5c3733ac83dc3a6c214859c3f56a480bb94
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Edward Welbourne 2020-09-07 16:03:26 +02:00
parent 1ca3af0a71
commit e926e68f50

View File

@ -198,18 +198,18 @@ tst_QDateTime::tst_QDateTime()
const uint day = 24 * 3600; // in seconds
zoneIsCET = (QDateTime(QDate(2038, 1, 19), QTime(4, 14, 7)).toSecsSinceEpoch() == 0x7fffffff
// Entries a year apart robustly differ by multiples of day.
&& QDateTime(QDate(2015, 7, 1), QTime()).toSecsSinceEpoch() == 1435701600
&& QDateTime(QDate(2015, 1, 1), QTime()).toSecsSinceEpoch() == 1420066800
&& QDateTime(QDate(2013, 7, 1), QTime()).toSecsSinceEpoch() == 1372629600
&& QDateTime(QDate(2013, 1, 1), QTime()).toSecsSinceEpoch() == 1356994800
&& QDateTime(QDate(2012, 7, 1), QTime()).toSecsSinceEpoch() == 1341093600
&& QDateTime(QDate(2012, 1, 1), QTime()).toSecsSinceEpoch() == 1325372400
&& QDateTime(QDate(2008, 7, 1), QTime()).toSecsSinceEpoch() == 1214863200
&& QDateTime(QDate(2004, 1, 1), QTime()).toSecsSinceEpoch() == 1072911600
&& QDateTime(QDate(2000, 1, 1), QTime()).toSecsSinceEpoch() == 946681200
&& QDateTime(QDate(1990, 7, 1), QTime()).toSecsSinceEpoch() == 646783200
&& QDateTime(QDate(1990, 1, 1), QTime()).toSecsSinceEpoch() == 631148400
&& QDateTime(QDate(1979, 1, 1), QTime()).toSecsSinceEpoch() == 283993200
&& QDate(2015, 7, 1).startOfDay().toSecsSinceEpoch() == 1435701600
&& QDate(2015, 1, 1).startOfDay().toSecsSinceEpoch() == 1420066800
&& QDate(2013, 7, 1).startOfDay().toSecsSinceEpoch() == 1372629600
&& QDate(2013, 1, 1).startOfDay().toSecsSinceEpoch() == 1356994800
&& QDate(2012, 7, 1).startOfDay().toSecsSinceEpoch() == 1341093600
&& QDate(2012, 1, 1).startOfDay().toSecsSinceEpoch() == 1325372400
&& QDate(2008, 7, 1).startOfDay().toSecsSinceEpoch() == 1214863200
&& QDate(2004, 1, 1).startOfDay().toSecsSinceEpoch() == 1072911600
&& QDate(2000, 1, 1).startOfDay().toSecsSinceEpoch() == 946681200
&& QDate(1990, 7, 1).startOfDay().toSecsSinceEpoch() == 646783200
&& QDate(1990, 1, 1).startOfDay().toSecsSinceEpoch() == 631148400
&& QDate(1979, 1, 1).startOfDay().toSecsSinceEpoch() == 283993200
// .toSecsSinceEpoch() returns -1 for everything before this:
&& QDateTime(QDate(1970, 1, 1), QTime(1, 0, 0)).toSecsSinceEpoch() == 0);
// Use .toMSecsSinceEpoch() if you really need to test anything earlier.
@ -325,7 +325,7 @@ void tst_QDateTime::ctor()
QCOMPARE(offset3.date(), offsetDate);
QCOMPARE(offset3.time(), offsetTime);
QDateTime offset4(offsetDate, QTime(), Qt::OffsetFromUTC, 60 * 60);
QDateTime offset4(offsetDate, QTime(0, 0), Qt::OffsetFromUTC, 60 * 60);
QCOMPARE(offset4.timeSpec(), Qt::OffsetFromUTC);
QCOMPARE(offset4.offsetFromUtc(), 60 * 60);
QCOMPARE(offset4.date(), offsetDate);
@ -336,7 +336,7 @@ void tst_QDateTime::operator_eq()
{
QVERIFY(QDateTime() != QDateTime(QDate(1970, 1, 1), QTime(0, 0))); // QTBUG-79006
QDateTime dt1(QDate(2004, 3, 24), QTime(23, 45, 57), Qt::UTC);
QDateTime dt2(QDate(2005, 3, 11), QTime(), Qt::UTC);
QDateTime dt2(QDate(2005, 3, 11), QTime(0, 0), Qt::UTC);
dt2 = dt1;
QVERIFY(dt1 == dt2);
}
@ -535,12 +535,12 @@ void tst_QDateTime::setSecsSinceEpoch()
{
QDateTime dt1;
dt1.setSecsSinceEpoch(0);
QCOMPARE(dt1.toUTC(), QDateTime(QDate(1970, 1, 1), QTime(), Qt::UTC));
QCOMPARE(dt1.toUTC(), QDate(1970, 1, 1).startOfDay(Qt::UTC));
QCOMPARE(dt1.timeSpec(), Qt::LocalTime);
dt1.setTimeSpec(Qt::UTC);
dt1.setSecsSinceEpoch(0);
QCOMPARE(dt1, QDateTime(QDate(1970, 1, 1), QTime(), Qt::UTC));
QCOMPARE(dt1, QDate(1970, 1, 1).startOfDay(Qt::UTC));
QCOMPARE(dt1.timeSpec(), Qt::UTC);
dt1.setSecsSinceEpoch(123456);
@ -590,7 +590,7 @@ void tst_QDateTime::setMSecsSinceEpoch_data()
QTest::newRow("zero")
<< Q_INT64_C(0)
<< QDateTime(QDate(1970, 1, 1), QTime(), Qt::UTC)
<< QDateTime(QDate(1970, 1, 1), QTime(0, 0), Qt::UTC)
<< QDateTime(QDate(1970, 1, 1), QTime(1, 0));
QTest::newRow("-1")
<< Q_INT64_C(-1)
@ -614,7 +614,7 @@ void tst_QDateTime::setMSecsSinceEpoch_data()
<< QDateTime(QDate(18772, 8, 15), QTime(3, 8, 14, 976));
QTest::newRow("old min (Tue Nov 25 00:00:00 -4714)")
<< Q_INT64_C(-210866716800000)
<< QDateTime(QDate::fromJulianDay(1), QTime(), Qt::UTC)
<< QDateTime(QDate::fromJulianDay(1), QTime(0, 0), Qt::UTC)
<< QDateTime(QDate::fromJulianDay(1), QTime(1, 0));
QTest::newRow("old max (Tue Jun 3 21:59:59 5874898)")
<< Q_INT64_C(185331720376799999)
@ -707,7 +707,7 @@ void tst_QDateTime::setMSecsSinceEpoch()
QCOMPARE(qint64(dt.toSecsSinceEpoch()), msecs / 1000);
}
QDateTime reference(QDate(1970, 1, 1), QTime(), Qt::UTC);
QDateTime reference(QDate(1970, 1, 1), QTime(0, 0), Qt::UTC);
QCOMPARE(dt, reference.addMSecs(msecs));
}
@ -761,7 +761,7 @@ void tst_QDateTime::fromMSecsSinceEpoch()
QCOMPARE(qint64(dtOffset.toSecsSinceEpoch()), msecs / 1000);
}
QDateTime reference(QDate(1970, 1, 1), QTime(), Qt::UTC);
QDateTime reference(QDate(1970, 1, 1), QTime(0, 0), Qt::UTC);
if (!localOverflow)
QCOMPARE(dtLocal, reference.addMSecs(msecs));
QCOMPARE(dtUtc, reference.addMSecs(msecs));
@ -1489,9 +1489,9 @@ void tst_QDateTime::toUTC()
void tst_QDateTime::daysTo()
{
QDateTime dt1(QDate(1760, 1, 2), QTime());
QDateTime dt2(QDate(1760, 2, 2), QTime());
QDateTime dt3(QDate(1760, 3, 2), QTime());
QDateTime dt1(QDate(1760, 1, 2).startOfDay());
QDateTime dt2(QDate(1760, 2, 2).startOfDay());
QDateTime dt3(QDate(1760, 3, 2).startOfDay());
QCOMPARE(dt1.daysTo(dt2), (qint64) 31);
QCOMPARE(dt1.addDays(31), dt2);
@ -1851,8 +1851,8 @@ void tst_QDateTime::springForward_data()
test.
*/
uint winter = QDateTime(QDate(2015, 1, 1), QTime()).toSecsSinceEpoch();
uint summer = QDateTime(QDate(2015, 7, 1), QTime()).toSecsSinceEpoch();
uint winter = QDate(2015, 1, 1).startOfDay().toSecsSinceEpoch();
uint summer = QDate(2015, 7, 1).startOfDay().toSecsSinceEpoch();
if (winter == 1420066800 && summer == 1435701600) {
QTest::newRow("CET from day before") << QDate(2015, 3, 29) << QTime(2, 30, 0) << 1 << 60;
@ -2471,7 +2471,8 @@ void tst_QDateTime::fromStringStringFormat_data()
QTest::addColumn<QDateTime>("expected");
const QDate defDate(1900, 1, 1);
QTest::newRow("data0") << QString("101010") << QString("dMyy") << QDateTime(QDate(1910, 10, 10), QTime());
QTest::newRow("data0")
<< QString("101010") << QString("dMyy") << QDate(1910, 10, 10).startOfDay();
QTest::newRow("data1") << QString("1020") << QString("sss") << QDateTime();
QTest::newRow("data2")
<< QString("1010") << QString("sss") << QDateTime(defDate, QTime(0, 0, 10));
@ -2484,13 +2485,20 @@ void tst_QDateTime::fromStringStringFormat_data()
// Friday; asking for Thursday moves this, without conflict, to the 7th):
QTest::newRow("data8")
<< QString("77 03 1963 Thu") << QString("yy MM yyyy ddd") << QDateTime();
QTest::newRow("data9") << QString("101010") << QString("dMyy") << QDateTime(QDate(1910, 10, 10), QTime());
QTest::newRow("data10") << QString("101010") << QString("dMyy") << QDateTime(QDate(1910, 10, 10), QTime());
QTest::newRow("data11") << QString("10 Oct 10") << QString("dd MMM yy") << QDateTime(QDate(1910, 10, 10), QTime());
QTest::newRow("data12") << QString("Fri December 3 2004") << QString("ddd MMMM d yyyy") << QDateTime(QDate(2004, 12, 3), QTime());
QTest::newRow("data9")
<< QString("101010") << QString("dMyy") << QDate(1910, 10, 10).startOfDay();
QTest::newRow("data10")
<< QString("101010") << QString("dMyy") << QDate(1910, 10, 10).startOfDay();
QTest::newRow("data11")
<< QString("10 Oct 10") << QString("dd MMM yy") << QDate(1910, 10, 10).startOfDay();
QTest::newRow("data12")
<< QString("Fri December 3 2004") << QString("ddd MMMM d yyyy")
<< QDate(2004, 12, 3).startOfDay();
QTest::newRow("data13") << QString("30.02.2004") << QString("dd.MM.yyyy") << QDateTime();
QTest::newRow("data14") << QString("32.01.2004") << QString("dd.MM.yyyy") << QDateTime();
QTest::newRow("data15") << QString("Thu January 2004") << QString("ddd MMMM yyyy") << QDateTime(QDate(2004, 1, 1), QTime());
QTest::newRow("data15")
<< QString("Thu January 2004") << QString("ddd MMMM yyyy")
<< QDate(2004, 1, 1).startOfDay();
QTest::newRow("data16") << QString("2005-06-28T07:57:30.001Z")
<< QString("yyyy-MM-ddThh:mm:ss.zt")
<< QDateTime(QDate(2005, 06, 28), QTime(07, 57, 30, 1), Qt::UTC);
@ -2981,16 +2989,16 @@ void tst_QDateTime::getDate()
void tst_QDateTime::fewDigitsInYear() const
{
const QDateTime three(QDate(300, 10, 11), QTime());
const QDateTime three(QDate(300, 10, 11).startOfDay());
QCOMPARE(three.toString(QLatin1String("yyyy-MM-dd")), QString::fromLatin1("0300-10-11"));
const QDateTime two(QDate(20, 10, 11), QTime());
const QDateTime two(QDate(20, 10, 11).startOfDay());
QCOMPARE(two.toString(QLatin1String("yyyy-MM-dd")), QString::fromLatin1("0020-10-11"));
const QDateTime yyTwo(QDate(30, 10, 11), QTime());
const QDateTime yyTwo(QDate(30, 10, 11).startOfDay());
QCOMPARE(yyTwo.toString(QLatin1String("yy-MM-dd")), QString::fromLatin1("30-10-11"));
const QDateTime yyOne(QDate(4, 10, 11), QTime());
const QDateTime yyOne(QDate(4, 10, 11).startOfDay());
QCOMPARE(yyOne.toString(QLatin1String("yy-MM-dd")), QString::fromLatin1("04-10-11"));
}