Ref T308, if QDateTime is invalid (normal state) setting a offset turns it into a valid timestamp of 1970 (which is wrong)

This commit is contained in:
Klaus Basan
2018-08-21 22:05:39 +02:00
parent 536cf15d37
commit 433818ca4f
2 changed files with 9 additions and 4 deletions

View File

@@ -261,15 +261,19 @@ namespace BlackMisc
QDateTime fromStringUtc(const QString &dateTimeString, const QString &format) QDateTime fromStringUtc(const QString &dateTimeString, const QString &format)
{ {
if (dateTimeString.isEmpty() || format.isEmpty()) { return QDateTime(); }
QDateTime dt = QDateTime::fromString(dateTimeString, format); QDateTime dt = QDateTime::fromString(dateTimeString, format);
dt.setUtcOffset(0); if (!dt.isValid()) { return dt; }
dt.setUtcOffset(0); // must only be applied to valid timestamps
return dt; return dt;
} }
QDateTime fromStringUtc(const QString &dateTimeString, Qt::DateFormat format) QDateTime fromStringUtc(const QString &dateTimeString, Qt::DateFormat format)
{ {
if (dateTimeString.isEmpty()) { return QDateTime(); }
QDateTime dt = QDateTime::fromString(dateTimeString, format); QDateTime dt = QDateTime::fromString(dateTimeString, format);
dt.setUtcOffset(0); if (!dt.isValid()) { return dt; }
dt.setUtcOffset(0); // must only be applied to valid timestamps
return dt; return dt;
} }

View File

@@ -235,7 +235,7 @@ namespace BlackMiscTest
{ {
CSimulatedAircraftList aircraft({ CSimulatedAircraft("BAW001", {}, {}) }); CSimulatedAircraftList aircraft({ CSimulatedAircraft("BAW001", {}, {}) });
CAtcStationList atcStations({ CAtcStation("EGLL_TWR") }); CAtcStationList atcStations({ CAtcStation("EGLL_TWR") });
CVariantMap testData const CVariantMap testData
{ {
{ "namespace1/value1", CVariant::from(1) }, { "namespace1/value1", CVariant::from(1) },
{ "namespace1/value2", CVariant::from(2) }, { "namespace1/value2", CVariant::from(2) },
@@ -260,7 +260,8 @@ namespace BlackMiscTest
CValueCache cache2(1); CValueCache cache2(1);
status = cache2.loadFromFiles(dir.absolutePath()); status = cache2.loadFromFiles(dir.absolutePath());
QVERIFY(status.isSuccess()); QVERIFY(status.isSuccess());
QCOMPARE(cache2.getAllValues(), testData); const CVariantMap test2Values = cache2.getAllValues();
QCOMPARE(test2Values, testData);
} }
//! Is value between 0 - 100? //! Is value between 0 - 100?