diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2016-05-12 16:28:22 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2016-06-10 17:56:48 +0000 |
commit | b726751cd12e7a93ddb7d2bf72fb821acafcef86 (patch) | |
tree | 72ddb68f78a59e31e6797597844526941aeaecd8 /src | |
parent | 38a1f610abfc8dd46449ad4634c3cd6db0743e7a (diff) |
Refactor & simplify QDateTime::setMSecsSinceEpoch
Change-Id: I06bae9392f534e45b3f1ffff144df5ce1aa52636
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/tools/qdatetime.cpp | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 0b3050138c..4beb5d8d1e 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -3320,19 +3320,20 @@ uint QDateTime::toTime_t() const void QDateTime::setMSecsSinceEpoch(qint64 msecs) { QDateTimePrivate *d = this->d.data(); // detaches (and shadows d) + const auto spec = d->spec(); + auto status = d->m_status; - d->m_status &= ~QDateTimePrivate::ValidityMask; - switch (d->spec()) { + status &= ~QDateTimePrivate::ValidityMask; + switch (spec) { case Qt::UTC: - d->m_msecs = msecs; - d->m_status = d->m_status + status = status | QDateTimePrivate::ValidDate | QDateTimePrivate::ValidTime | QDateTimePrivate::ValidDateTime; break; case Qt::OffsetFromUTC: - d->m_msecs = msecs + (d->m_offsetFromUtc * 1000); - d->m_status = d->m_status + msecs = msecs + (d->m_offsetFromUtc * 1000); + status = status | QDateTimePrivate::ValidDate | QDateTimePrivate::ValidTime | QDateTimePrivate::ValidDateTime; @@ -3345,25 +3346,31 @@ void QDateTime::setMSecsSinceEpoch(qint64 msecs) d->m_offsetFromUtc = d->m_timeZone.d->offsetFromUtc(msecs); else d->m_offsetFromUtc = d->m_timeZone.d->standardTimeOffset(msecs); - d->m_msecs = msecs + (d->m_offsetFromUtc * 1000); - d->m_status = d->m_status + msecs = msecs + (d->m_offsetFromUtc * 1000); + status = status | QDateTimePrivate::ValidDate | QDateTimePrivate::ValidTime | QDateTimePrivate::ValidDateTime; - d->refreshDateTime(); #endif // QT_BOOTSTRAPPED break; case Qt::LocalTime: { QDate dt; QTime tm; - QDateTimePrivate::DaylightStatus status; - epochMSecsToLocalTime(msecs, &dt, &tm, &status); + QDateTimePrivate::DaylightStatus dstStatus; + epochMSecsToLocalTime(msecs, &dt, &tm, &dstStatus); d->setDateTime(dt, tm); - d->setDaylightStatus(status); - d->refreshDateTime(); + d->setDaylightStatus(dstStatus); + msecs = d->m_msecs; + status = d->m_status; break; } } + + d->m_status = status; + d->m_msecs = msecs; + + if (spec == Qt::LocalTime || spec == Qt::TimeZone) + d->refreshDateTime(); } /*! |