summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/corelib/time/qtimezoneprivate_icu.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/corelib/time/qtimezoneprivate_icu.cpp b/src/corelib/time/qtimezoneprivate_icu.cpp
index b1de236fcb5..1f070571685 100644
--- a/src/corelib/time/qtimezoneprivate_icu.cpp
+++ b/src/corelib/time/qtimezoneprivate_icu.cpp
@@ -386,8 +386,17 @@ int QIcuTimeZonePrivate::daylightTimeOffset(qint64 atMSecsSinceEpoch) const
bool QIcuTimeZonePrivate::hasDaylightTime() const
{
- // TODO No direct ICU C api, work-around below not reliable? Find a better way?
- return (ucalDaylightOffset(m_id) != 0);
+ if (ucalDaylightOffset(m_id) != 0)
+ return true;
+#if U_ICU_VERSION_MAJOR_NUM == 50
+ for (qint64 when = minMSecs(); when != invalidMSecs(); ) {
+ auto data = nextTransition(when);
+ if (data.daylightTimeOffset && data.daylightTimeOffset != invalidSeconds())
+ return true;
+ when = data.atMSecsSinceEpoch;
+ }
+#endif
+ return false;
}
bool QIcuTimeZonePrivate::isDaylightTime(qint64 atMSecsSinceEpoch) const