summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/time/qtimezoneprivate_mac.mm16
-rw-r--r--src/corelib/time/qtimezoneprivate_p.h2
2 files changed, 11 insertions, 7 deletions
diff --git a/src/corelib/time/qtimezoneprivate_mac.mm b/src/corelib/time/qtimezoneprivate_mac.mm
index b7cfd2bb85..8bc48f893b 100644
--- a/src/corelib/time/qtimezoneprivate_mac.mm
+++ b/src/corelib/time/qtimezoneprivate_mac.mm
@@ -57,12 +57,10 @@ QMacTimeZonePrivate *QMacTimeZonePrivate::clone() const
void QMacTimeZonePrivate::init(const QByteArray &ianaId)
{
- if (availableTimeZoneIds().contains(ianaId)) {
- m_nstz = [[NSTimeZone timeZoneWithName:QString::fromUtf8(ianaId).toNSString()] retain];
- if (m_nstz)
- m_id = ianaId;
- }
- if (!m_nstz) {
+ m_nstz = [[NSTimeZone timeZoneWithName:QString::fromUtf8(ianaId).toNSString()] retain];
+ if (m_nstz) {
+ m_id = ianaId;
+ } else {
// macOS has been seen returning a systemTimeZone which reports its name
// as Asia/Kolkata, which doesn't appear in knownTimeZoneNames (which
// calls the zone Asia/Calcutta). So explicitly check for the name
@@ -286,6 +284,12 @@ QByteArray QMacTimeZonePrivate::systemTimeZoneId() const
return QString::fromNSString(NSTimeZone.systemTimeZone.name).toUtf8();
}
+bool QMacTimeZonePrivate::isTimeZoneIdAvailable(const QByteArray& ianaId) const
+{
+ QMacAutoReleasePool pool;
+ return [NSTimeZone timeZoneWithName:QString::fromUtf8(ianaId).toNSString()] != nil;
+}
+
QList<QByteArray> QMacTimeZonePrivate::availableTimeZoneIds() const
{
NSEnumerator *enumerator = NSTimeZone.knownTimeZoneNames.objectEnumerator;
diff --git a/src/corelib/time/qtimezoneprivate_p.h b/src/corelib/time/qtimezoneprivate_p.h
index 8085247953..4942ecd477 100644
--- a/src/corelib/time/qtimezoneprivate_p.h
+++ b/src/corelib/time/qtimezoneprivate_p.h
@@ -366,7 +366,7 @@ public:
Data previousTransition(qint64 beforeMSecsSinceEpoch) const override;
QByteArray systemTimeZoneId() const override;
-
+ bool isTimeZoneIdAvailable(const QByteArray &ianaId) const override;
QList<QByteArray> availableTimeZoneIds() const override;
NSTimeZone *nsTimeZone() const;