6#ifndef QTIMEZONEPRIVATE_P_H
7#define QTIMEZONEPRIVATE_P_H
22#include "private/qlocale_p.h"
23#include "private/qdatetime_p.h"
26#include <unicode/ucal.h>
62 atMSecsSinceEpoch(when),
64 standardTimeOffset(standard),
65 daylightTimeOffset(
offset - standard)
84 virtual QString comment()
const;
87 QTimeZone::NameType nameType,
90 QTimeZone::NameType nameType,
94 virtual int offsetFromUtc(
qint64 atMSecsSinceEpoch)
const;
95 virtual int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const;
96 virtual int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const;
98 virtual bool hasDaylightTime()
const;
99 virtual bool isDaylightTime(
qint64 atMSecsSinceEpoch)
const;
102 virtual Data data(QTimeZone::TimeType timeType)
const;
103 virtual bool isDataLocale(
const QLocale &locale)
const;
105 QDateTimePrivate::TransitionOptions
resolve)
const;
107 virtual bool hasTransitions()
const;
108 virtual Data nextTransition(
qint64 afterMSecsSinceEpoch)
const;
109 virtual Data previousTransition(
qint64 beforeMSecsSinceEpoch)
const;
114 virtual bool isTimeZoneIdAvailable(
const QByteArray &ianaId)
const;
115 virtual QList<QByteArray> availableTimeZoneIds()
const;
117 virtual QList<QByteArray> availableTimeZoneIds(
int utcOffset)
const;
123 {
return (std::numeric_limits<qint64>::max)(); }
125 {
return (std::numeric_limits<qint64>::min)() + 1; }
127 {
return (std::numeric_limits<qint64>::min)(); }
129 {
return (std::numeric_limits<int>::min)(); }
130 static QTimeZone::OffsetData invalidOffsetData();
131 static QTimeZone::OffsetData toOffsetData(
const Data &
data);
132 static bool isValidId(
const QByteArray &ianaId);
133 static QString isoOffsetFormat(
int offsetFromUtc,
134 QTimeZone::NameType
mode = QTimeZone::OffsetName);
140 static QList<QByteArray> windowsIdToIanaIds(
const QByteArray &windowsId);
141 static QList<QByteArray> windowsIdToIanaIds(
const QByteArray &windowsId,
155#if QT_CONFIG(timezone_locale)
158 QString localeName(
qint64 atMSecsSinceEpoch,
int offsetFromUtc,
159 QTimeZone::TimeType timeType,
160 QTimeZone::NameType nameType,
193 Data data(QTimeZone::TimeType timeType)
const override;
194 bool isDataLocale(
const QLocale &locale)
const override;
197 QString comment()
const override;
200 QTimeZone::NameType nameType,
201 const QLocale &locale)
const override;
203 QTimeZone::NameType nameType,
204 const QLocale &locale)
const override;
205 QString abbreviation(
qint64 atMSecsSinceEpoch)
const override;
207 int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
208 int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
212 bool isTimeZoneIdAvailable(
const QByteArray &ianaId)
const override;
213 QList<QByteArray> availableTimeZoneIds()
const override;
215 QList<QByteArray> availableTimeZoneIds(
int utcOffset)
const override;
235#if QT_CONFIG(icu) && !defined(Q_OS_UNIX)
240 QIcuTimeZonePrivate();
242 QIcuTimeZonePrivate(
const QByteArray &ianaId);
243 QIcuTimeZonePrivate(
const QIcuTimeZonePrivate &
other);
244 ~QIcuTimeZonePrivate();
246 QIcuTimeZonePrivate *clone()
const override;
250 const QLocale &locale)
const override;
252 int offsetFromUtc(
qint64 atMSecsSinceEpoch)
const override;
253 int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
254 int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
256 bool hasDaylightTime()
const override;
257 bool isDaylightTime(
qint64 atMSecsSinceEpoch)
const override;
262 bool hasTransitions()
const override;
263 Data nextTransition(
qint64 afterMSecsSinceEpoch)
const override;
264 Data previousTransition(
qint64 beforeMSecsSinceEpoch)
const override;
268 bool isTimeZoneIdAvailable(
const QByteArray &ianaId)
const override;
269 QList<QByteArray> availableTimeZoneIds()
const override;
271 QList<QByteArray> availableTimeZoneIds(
int offsetFromUtc)
const override;
280#if defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN) && !defined(Q_OS_ANDROID)
281struct QTzTransitionTime
287struct QTzTransitionRule
291 quint8 abbreviationIndex = 0;
294constexpr inline bool operator==(
const QTzTransitionRule &lhs,
const QTzTransitionRule &rhs)
noexcept
295{
return lhs.stdOffset == rhs.stdOffset && lhs.dstOffset == rhs.dstOffset && lhs.abbreviationIndex == rhs.abbreviationIndex; }
296constexpr inline bool operator!=(
const QTzTransitionRule &lhs,
const QTzTransitionRule &rhs)
noexcept
301struct QTzTimeZoneCacheEntry
303 QList<QTzTransitionTime> m_tranTimes;
304 QList<QTzTransitionRule> m_tranRules;
305 QList<QByteArray> m_abbreviations;
307 QTzTransitionRule m_preZoneRule;
308 bool m_hasDst =
false;
313 QTzTimeZonePrivate(
const QTzTimeZonePrivate &) =
default;
316 QTzTimeZonePrivate();
319 ~QTzTimeZonePrivate();
321 QTzTimeZonePrivate *clone()
const override;
324 QString comment()
const override;
328 QTimeZone::NameType nameType,
329 const QLocale &locale)
const override;
330 QString abbreviation(
qint64 atMSecsSinceEpoch)
const override;
332 int offsetFromUtc(
qint64 atMSecsSinceEpoch)
const override;
333 int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
334 int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
336 bool hasDaylightTime()
const override;
337 bool isDaylightTime(
qint64 atMSecsSinceEpoch)
const override;
340 Data data(QTimeZone::TimeType timeType)
const override;
341 bool isDataLocale(
const QLocale &locale)
const override;
343 bool hasTransitions()
const override;
344 Data nextTransition(
qint64 afterMSecsSinceEpoch)
const override;
345 Data previousTransition(
qint64 beforeMSecsSinceEpoch)
const override;
349 bool isTimeZoneIdAvailable(
const QByteArray &ianaId)
const override;
350 QList<QByteArray> availableTimeZoneIds()
const override;
355 QList<QTimeZonePrivate::Data> getPosixTransitions(
qint64 msNear)
const;
357 Data dataForTzTransition(QTzTransitionTime tran)
const;
358 Data dataFromRule(QTzTransitionRule
rule,
qint64 msecsSinceEpoch)
const;
359 QTzTimeZoneCacheEntry cached_data;
360 const QList<QTzTransitionTime> &tranCache()
const {
return cached_data.m_tranTimes; }
369 QMacTimeZonePrivate();
371 QMacTimeZonePrivate(
const QByteArray &ianaId);
372 QMacTimeZonePrivate(
const QMacTimeZonePrivate &
other);
373 ~QMacTimeZonePrivate();
375 QMacTimeZonePrivate *clone()
const override;
377 QString comment()
const override;
381 const QLocale &locale)
const override;
382 QString abbreviation(
qint64 atMSecsSinceEpoch)
const override;
384 int offsetFromUtc(
qint64 atMSecsSinceEpoch)
const override;
385 int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
386 int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
388 bool hasDaylightTime()
const override;
389 bool isDaylightTime(
qint64 atMSecsSinceEpoch)
const override;
394 bool hasTransitions()
const override;
395 Data nextTransition(
qint64 afterMSecsSinceEpoch)
const override;
396 Data previousTransition(
qint64 beforeMSecsSinceEpoch)
const override;
399 bool isTimeZoneIdAvailable(
const QByteArray &ianaId)
const override;
400 QList<QByteArray> availableTimeZoneIds()
const override;
402 NSTimeZone *nsTimeZone()
const;
411#if defined(Q_OS_WIN) && !QT_CONFIG(icu)
415 struct QWinTransitionRule {
417 int standardTimeBias;
418 int daylightTimeBias;
419 SYSTEMTIME standardTimeRule;
420 SYSTEMTIME daylightTimeRule;
424 QWinTimeZonePrivate();
426 QWinTimeZonePrivate(
const QByteArray &ianaId);
427 QWinTimeZonePrivate(
const QWinTimeZonePrivate &
other);
428 ~QWinTimeZonePrivate();
430 QWinTimeZonePrivate *clone()
const override;
432 QString comment()
const override;
436 const QLocale &locale)
const override;
437 QString abbreviation(
qint64 atMSecsSinceEpoch)
const override;
439 int offsetFromUtc(
qint64 atMSecsSinceEpoch)
const override;
440 int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
441 int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
443 bool hasDaylightTime()
const override;
444 bool isDaylightTime(
qint64 atMSecsSinceEpoch)
const override;
449 bool hasTransitions()
const override;
450 Data nextTransition(
qint64 afterMSecsSinceEpoch)
const override;
451 Data previousTransition(
qint64 beforeMSecsSinceEpoch)
const override;
455 QList<QByteArray> availableTimeZoneIds()
const override;
459 QTimeZone::TimeType
type,
bool fakeDst =
false)
const;
467 QList<QWinTransitionRule> m_tranRules;
476 QAndroidTimeZonePrivate();
478 QAndroidTimeZonePrivate(
const QByteArray &ianaId);
479 QAndroidTimeZonePrivate(
const QAndroidTimeZonePrivate &
other);
480 ~QAndroidTimeZonePrivate();
482 QAndroidTimeZonePrivate *clone()
const override;
486 const QLocale &locale)
const override;
487 QString abbreviation(
qint64 atMSecsSinceEpoch)
const override;
489 int offsetFromUtc(
qint64 atMSecsSinceEpoch)
const override;
490 int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
491 int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
493 bool hasDaylightTime()
const override;
494 bool isDaylightTime(
qint64 atMSecsSinceEpoch)
const override;
500 bool isTimeZoneIdAvailable(
const QByteArray &ianaId)
const override;
501 QList<QByteArray> availableTimeZoneIds()
const override;
\inmodule QtCore\reentrant
\macro QT_RESTRICTED_CAST_FROM_ASCII
static QByteArray utcQByteArray()
virtual Data data(qint64 forMSecsSinceEpoch) const
virtual QString displayName(qint64 atMSecsSinceEpoch, QTimeZone::NameType nameType, const QLocale &locale) const
static constexpr qint64 invalidMSecs()
static constexpr qint64 maxMSecs()
static constexpr qint64 minMSecs()
static constexpr qint64 invalidSeconds()
static QString utcQString()
Combined button and popup list for selecting options.
#define QByteArrayLiteral(str)
static QString displayName(CGDirectDisplayID displayID)
constexpr bool operator!=(const timespec &t1, const timespec &t2)
#define Q_FORWARD_DECLARE_OBJC_CLASS(classname)
DBusConnection const char * rule
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum GLuint GLintptr offset
static const QQmlJSScope * resolve(const QQmlJSScope *current, const QStringList &names)
bool operator==(const QRandomGenerator &rng1, const QRandomGenerator &rng2)
#define QStringLiteral(str)
#define Q_AUTOTEST_EXPORT
#define QT_REQUIRE_CONFIG(feature)
static QT_BEGIN_NAMESPACE void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharAttributes *attributes)
#define Q_DECLARE_TYPEINFO(TYPE, FLAGS)
Data(const QString &name, qint64 when, int offset, int standard)