diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 69d4bd7d996..f3dfb5347af 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -3186,13 +3186,11 @@ QTimeZone QDateTime::timeZone() const d->m_timeZone = QTimeZone(d->m_offsetFromUtc); return d->m_timeZone; case Qt::UTC: - if (!d->m_timeZone.isValid()) - d->m_timeZone = QTimeZone(QTimeZonePrivate::utcQByteArray()); - return d->m_timeZone; - case Qt::TimeZone : + return QTimeZone::utc(); + case Qt::TimeZone: return d->m_timeZone; case Qt::LocalTime: - return QTimeZone(QTimeZone::systemTimeZoneId()); + return QTimeZone::systemTimeZone(); } return QTimeZone(); } diff --git a/src/corelib/tools/qtimezone.cpp b/src/corelib/tools/qtimezone.cpp index fb5af2bf4a7..30c4c601678 100644 --- a/src/corelib/tools/qtimezone.cpp +++ b/src/corelib/tools/qtimezone.cpp @@ -788,6 +788,29 @@ QByteArray QTimeZone::systemTimeZoneId() return global_tz->backend->systemTimeZoneId(); } +/*! + \since 5.5 + Returns a QTimeZone object that refers to the local system time, as + specified by systemTimeZoneId(). + + \sa utc() +*/ +QTimeZone QTimeZone::systemTimeZone() +{ + return QTimeZone(QTimeZone::systemTimeZoneId()); +} + +/*! + \since 5.5 + Returns a QTimeZone object that refers to UTC (Universal Time Coordinated). + + \sa systemTimeZone() +*/ +QTimeZone QTimeZone::utc() +{ + return QTimeZone(QTimeZonePrivate::utcQByteArray()); +} + /*! Returns \c true if a given time zone \a ianaId is available on this system. diff --git a/src/corelib/tools/qtimezone.h b/src/corelib/tools/qtimezone.h index ef0bdc57cd5..e35cee6bbea 100644 --- a/src/corelib/tools/qtimezone.h +++ b/src/corelib/tools/qtimezone.h @@ -117,6 +117,8 @@ public: OffsetDataList transitions(const QDateTime &fromDateTime, const QDateTime &toDateTime) const; static QByteArray systemTimeZoneId(); + static QTimeZone systemTimeZone(); + static QTimeZone utc(); static bool isTimeZoneIdAvailable(const QByteArray &ianaId);