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);
141 static QList<QByteArray> windowsIdToIanaIds(
const QByteArray &windowsId);
142 static QList<QByteArray> windowsIdToIanaIds(
const QByteArray &windowsId,
156#if QT_CONFIG(timezone_locale)
159 QString localeName(
qint64 atMSecsSinceEpoch,
int offsetFromUtc,
160 QTimeZone::TimeType timeType,
161 QTimeZone::NameType nameType,
194 Data data(QTimeZone::TimeType timeType)
const override;
195 bool isDataLocale(
const QLocale &locale)
const override;
198 QString comment()
const override;
201 QTimeZone::NameType nameType,
202 const QLocale &locale)
const override;
204 QTimeZone::NameType nameType,
205 const QLocale &locale)
const override;
206 QString abbreviation(
qint64 atMSecsSinceEpoch)
const override;
208 int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
209 int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
213 bool isTimeZoneIdAvailable(
const QByteArray &ianaId)
const override;
214 QList<QByteArray> availableTimeZoneIds()
const override;
216 QList<QByteArray> availableTimeZoneIds(
int utcOffset)
const override;
236#if QT_CONFIG(icu) && !defined(Q_OS_UNIX)
241 QIcuTimeZonePrivate();
243 QIcuTimeZonePrivate(
const QByteArray &ianaId);
244 QIcuTimeZonePrivate(
const QIcuTimeZonePrivate &
other);
245 ~QIcuTimeZonePrivate();
247 QIcuTimeZonePrivate *clone()
const override;
251 const QLocale &locale)
const override;
253 int offsetFromUtc(
qint64 atMSecsSinceEpoch)
const override;
254 int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
255 int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
257 bool hasDaylightTime()
const override;
258 bool isDaylightTime(
qint64 atMSecsSinceEpoch)
const override;
263 bool hasTransitions()
const override;
264 Data nextTransition(
qint64 afterMSecsSinceEpoch)
const override;
265 Data previousTransition(
qint64 beforeMSecsSinceEpoch)
const override;
269 bool isTimeZoneIdAvailable(
const QByteArray &ianaId)
const override;
270 QList<QByteArray> availableTimeZoneIds()
const override;
272 QList<QByteArray> availableTimeZoneIds(
int offsetFromUtc)
const override;
281#if defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN) && !defined(Q_OS_ANDROID)
282struct QTzTransitionTime
288struct QTzTransitionRule
292 quint8 abbreviationIndex = 0;
295constexpr inline bool operator==(
const QTzTransitionRule &lhs,
const QTzTransitionRule &rhs)
noexcept
296{
return lhs.stdOffset == rhs.stdOffset && lhs.dstOffset == rhs.dstOffset && lhs.abbreviationIndex == rhs.abbreviationIndex; }
297constexpr inline bool operator!=(
const QTzTransitionRule &lhs,
const QTzTransitionRule &rhs)
noexcept
302struct QTzTimeZoneCacheEntry
304 QList<QTzTransitionTime> m_tranTimes;
305 QList<QTzTransitionRule> m_tranRules;
306 QList<QByteArray> m_abbreviations;
308 QTzTransitionRule m_preZoneRule;
309 bool m_hasDst =
false;
314 QTzTimeZonePrivate(
const QTzTimeZonePrivate &) =
default;
317 QTzTimeZonePrivate();
320 ~QTzTimeZonePrivate();
322 QTzTimeZonePrivate *clone()
const override;
325 QString comment()
const override;
329 QTimeZone::NameType nameType,
330 const QLocale &locale)
const override;
331 QString abbreviation(
qint64 atMSecsSinceEpoch)
const override;
333 int offsetFromUtc(
qint64 atMSecsSinceEpoch)
const override;
334 int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
335 int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
337 bool hasDaylightTime()
const override;
338 bool isDaylightTime(
qint64 atMSecsSinceEpoch)
const override;
341 Data data(QTimeZone::TimeType timeType)
const override;
342 bool isDataLocale(
const QLocale &locale)
const override;
344 bool hasTransitions()
const override;
345 Data nextTransition(
qint64 afterMSecsSinceEpoch)
const override;
346 Data previousTransition(
qint64 beforeMSecsSinceEpoch)
const override;
350 bool isTimeZoneIdAvailable(
const QByteArray &ianaId)
const override;
351 QList<QByteArray> availableTimeZoneIds()
const override;
356 QList<QTimeZonePrivate::Data> getPosixTransitions(
qint64 msNear)
const;
358 Data dataForTzTransition(QTzTransitionTime tran)
const;
359 Data dataFromRule(QTzTransitionRule
rule,
qint64 msecsSinceEpoch)
const;
360 QTzTimeZoneCacheEntry cached_data;
361 const QList<QTzTransitionTime> &tranCache()
const {
return cached_data.m_tranTimes; }
370 QMacTimeZonePrivate();
372 QMacTimeZonePrivate(
const QByteArray &ianaId);
373 QMacTimeZonePrivate(
const QMacTimeZonePrivate &
other);
374 ~QMacTimeZonePrivate();
376 QMacTimeZonePrivate *clone()
const override;
378 QString comment()
const override;
382 const QLocale &locale)
const override;
383 QString abbreviation(
qint64 atMSecsSinceEpoch)
const override;
385 int offsetFromUtc(
qint64 atMSecsSinceEpoch)
const override;
386 int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
387 int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
389 bool hasDaylightTime()
const override;
390 bool isDaylightTime(
qint64 atMSecsSinceEpoch)
const override;
395 bool hasTransitions()
const override;
396 Data nextTransition(
qint64 afterMSecsSinceEpoch)
const override;
397 Data previousTransition(
qint64 beforeMSecsSinceEpoch)
const override;
400 bool isTimeZoneIdAvailable(
const QByteArray &ianaId)
const override;
401 QList<QByteArray> availableTimeZoneIds()
const override;
403 NSTimeZone *nsTimeZone()
const;
412#if defined(Q_OS_WIN) && !QT_CONFIG(icu)
416 struct QWinTransitionRule {
418 int standardTimeBias;
419 int daylightTimeBias;
420 SYSTEMTIME standardTimeRule;
421 SYSTEMTIME daylightTimeRule;
425 QWinTimeZonePrivate();
427 QWinTimeZonePrivate(
const QByteArray &ianaId);
428 QWinTimeZonePrivate(
const QWinTimeZonePrivate &
other);
429 ~QWinTimeZonePrivate();
431 QWinTimeZonePrivate *clone()
const override;
433 QString comment()
const override;
437 const QLocale &locale)
const override;
438 QString abbreviation(
qint64 atMSecsSinceEpoch)
const override;
440 int offsetFromUtc(
qint64 atMSecsSinceEpoch)
const override;
441 int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
442 int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
444 bool hasDaylightTime()
const override;
445 bool isDaylightTime(
qint64 atMSecsSinceEpoch)
const override;
450 bool hasTransitions()
const override;
451 Data nextTransition(
qint64 afterMSecsSinceEpoch)
const override;
452 Data previousTransition(
qint64 beforeMSecsSinceEpoch)
const override;
456 QList<QByteArray> availableTimeZoneIds()
const override;
460 QTimeZone::TimeType
type,
bool fakeDst =
false)
const;
468 QList<QWinTransitionRule> m_tranRules;
477 QAndroidTimeZonePrivate();
479 QAndroidTimeZonePrivate(
const QByteArray &ianaId);
480 QAndroidTimeZonePrivate(
const QAndroidTimeZonePrivate &
other);
481 ~QAndroidTimeZonePrivate();
483 QAndroidTimeZonePrivate *clone()
const override;
487 const QLocale &locale)
const override;
488 QString abbreviation(
qint64 atMSecsSinceEpoch)
const override;
490 int offsetFromUtc(
qint64 atMSecsSinceEpoch)
const override;
491 int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
492 int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
494 bool hasDaylightTime()
const override;
495 bool isDaylightTime(
qint64 atMSecsSinceEpoch)
const override;
501 bool isTimeZoneIdAvailable(
const QByteArray &ianaId)
const override;
502 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)