Spec-Zone.ru › Qt 6.0

Класс QTimeZone

Класс QTimeZone преобразует время между UTC и локальным временем в определённой часовой зоне. Подробнее...

Заголовок: #include <QTimeZone>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
С версии: Qt 5.2
  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются безопасными для потоков.

Типы публичного доступа

структура OffsetData
перечисление NameType { DefaultName, LongName, ShortName, OffsetName }
OffsetDataList
перечисление TimeType { StandardTime, DaylightTime, GenericTime }
перечисление anonymous { MinUtcOffsetSecs, MaxUtcOffsetSecs }

Функции публичного доступа

QTimeZone(const QTimeZone &other)
QTimeZone(const QByteArray &ianaId, int offsetSeconds, const QString &name, const QString &abbreviation, QLocale::Country country = QLocale::AnyCountry, const QString &comment = QString())
QTimeZone(int offsetSeconds)
QTimeZone(const QByteArray &ianaId)
QTimeZone()
QTimeZone & operator=(QTimeZone &&other)
QTimeZone & operator=(const QTimeZone &other)
~QTimeZone()
QString abbreviation(const QDateTime &atDateTime) const
QString comment() const
QLocale::Country country() const
int daylightTimeOffset(const QDateTime &atDateTime) const
QString displayName(const QDateTime &atDateTime, QTimeZone::NameType nameType = QTimeZone::DefaultName, const QLocale &locale = QLocale()) const
QString displayName(QTimeZone::TimeType timeType, QTimeZone::NameType nameType = QTimeZone::DefaultName, const QLocale &locale = QLocale()) const
bool hasDaylightTime() const
bool hasTransitions() const
QByteArray id() const
bool isDaylightTime(const QDateTime &atDateTime) const
bool isValid() const
QTimeZone::OffsetData nextTransition(const QDateTime &afterDateTime) const
QTimeZone::OffsetData offsetData(const QDateTime &forDateTime) const
int offsetFromUtc(const QDateTime &atDateTime) const
QTimeZone::OffsetData previousTransition(const QDateTime &beforeDateTime) const
int standardTimeOffset(const QDateTime &atDateTime) const
void swap(QTimeZone &other)
CFTimeZoneRef toCFTimeZone() const
NSTimeZone * toNSTimeZone() const
QTimeZone::OffsetDataList transitions(const QDateTime &fromDateTime, const QDateTime &toDateTime) const
bool operator!=(const QTimeZone &other) const
bool operator==(const QTimeZone &other) const

Статические члены публичного доступа

QList<QByteArray> availableTimeZoneIds()
QList<QByteArray> availableTimeZoneIds(QLocale::Country country)
QList<QByteArray> availableTimeZoneIds(int offsetSeconds)
QTimeZone fromCFTimeZone(CFTimeZoneRef timeZone)
QTimeZone fromNSTimeZone(const NSTimeZone *timeZone)
QByteArray ianaIdToWindowsId(const QByteArray &ianaId)
bool isTimeZoneIdAvailable(const QByteArray &ianaId)
QTimeZone systemTimeZone()
QByteArray systemTimeZoneId()
QTimeZone utc()
QByteArray windowsIdToDefaultIanaId(const QByteArray &windowsId)
QByteArray windowsIdToDefaultIanaId(const QByteArray &windowsId, QLocale::Country country)
QList<QByteArray> windowsIdToIanaIds(const QByteArray &windowsId)
QList<QByteArray> windowsIdToIanaIds(const QByteArray &windowsId, QLocale::Country country)

Подробное описание

Этот класс предоставляет бессостоятельный калькулятор для преобразования часовых поясов между UTC и местным временем в определенном часовом поясе. По умолчанию он использует данные о часовом поясе хост-системы для выполнения этих преобразований.

Этот класс предназначен в первую очередь для использования с QDateTime; большинство приложений не нуждаются в прямом доступе к этому классу и должны вместо этого использовать QDateTime с Qt::TimeSpec типа Qt::TimeZone.

Примечание: Для согласованности с QDateTime, QTimeZone не учитывает високочные секунды.

Примечания

Идентификаторы часовых поясов IANA

QTimeZone использует идентификаторы часовых поясов IANA, определенные в базе данных часовых поясов IANA (http://www.iana.org/time-zones). Это для обеспечения стандартного идентификатора на всех поддерживаемых платформах. Большинство платформ поддерживают идентификаторы IANA и базу данных IANA непосредственно, но для Windows требуется отображение на собственные идентификаторы. Более подробные сведения см. ниже.

Идентификаторы IANA могут и меняются регулярно и могут отличаться в зависимости от того, когда были обновлены данные хост-системы. Поэтому нельзя полагаться на то, что данный идентификатор существует на любой хост-системе. Необходимо использовать availableTimeZoneIds() для определения доступных идентификаторов IANA.

Идентификаторы IANA и база данных также известны как идентификаторы и база данных Olson, названные в честь их создателя.

Часовые пояса со смещением от UTC

Предоставляется стандартный бэкенд для часового пояса UTC, который всегда гарантированно доступен. Это предоставляет набор общих часовых поясов со смещением от UTC в диапазоне от UTC-14:00 до UTC+14:00. Эти часовые пояса можно создать, используя стандартные имена формата ISO «UTC+00:00», как указано в availableTimeZoneIds(), или используя количество секунд смещения.

Часовые пояса Windows

Поддержка часовых поясов Windows в значительной степени ограничена по сравнению со стандартной базой данных часовых поясов IANA. Часовые пояса Windows охватывают более широкие географические области и поэтому менее точны при преобразованиях. Они также не поддерживают столько данных по историческим преобразованиям, поэтому они могут быть точными только для текущего года.

QTimeZone использует таблицу преобразований, полученную из данных Unicode CLDR, для отображения соответствия между идентификаторами IANA и идентификаторами Windows. В зависимости от вашей версии Windows и Qt, эта таблица может не предоставить допустимое преобразование, в результате чего будет возвращено «UTC».

QTimeZone предоставляет публичный API для использования этой таблицы преобразований. Используемый идентификатор Windows — это ключ реестра Windows для часового пояса, который также является идентификатором MS Exchange EWS, но отличается от имени часового пояса (TZID) и кода COD, используемых MS Exchange в версиях до 2007 года.

Системный часовой пояс

QTimeZone не поддерживает понятие системного или по умолчанию часового пояса. Если вам требуется QDateTime, использующий текущий системный часовой пояс в любой момент времени, необходимо использовать Qt::TimeSpec типа Qt::LocalTime.

Метод systemTimeZoneId() возвращает текущий системный идентификатор часового пояса IANA, который на системах Unix-подобных всегда будет корректным. В Windows этот идентификатор переводится из системного идентификатора Windows с помощью внутренней таблицы преобразования и выбранной страной пользователя. Вследствие этого существует небольшая вероятность, что в любой установке Windows могут быть идентификаторы, неизвестные Qt, в этом случае будет возвращено «UTC».

Создание нового экземпляра QTimeZone, используя идентификатор системного часового пояса, будет создавать только фиксированную копию часового пояса, он не будет меняться, если системный часовой пояс изменится.

Смещения часовых поясов

Разница между UTC и местным временем в часовом поясе выражается как смещение в секундах от UTC, т. е. количество секунд, которое нужно добавить к UTC, чтобы получить местное время. Общее смещение состоит из двух частей: стандартного смещения и смещения летнего времени. Стандартное смещение — это количество секунд, которое нужно добавить к UTC, чтобы получить стандартное время в часовом поясе. Смещение летнего времени — это количество секунд, которое нужно добавить к стандартному смещению, чтобы получить летнее время (сокращенно DST и иногда называемое «дневное время» или «летнее время») в часовом поясе.

Обратите внимание, что стандартные и летние смещения для часового пояса могут изменяться со временем, так как страны изменяют законы о летнем времени или даже стандартное смещение времени.

Лицензия

Этот класс включает данные, полученные из файлов данных CLDR, в соответствии с условиями лицензии на файлы и программное обеспечение Unicode. Подробности см. на странице Unicode Common Locale Data Repository (CLDR).

См. также QDateTime.

Документация типов членов

enum QTimeZone::NameType

Тип имени часового пояса.

Постоянная Значение Описание
QTimeZone::DefaultName 0 Стандартный вид имени часового пояса, например, LongName, ShortName или OffsetName
QTimeZone::LongName 1 Полное имя часового пояса, например, «Центвропейское время»
QTimeZone::ShortName 2 Сокращенное имя часового пояса, обычно аббревиатура, например, «CET»
QTimeZone::OffsetName 3 Стандартная форма ISO смещения имени часового пояса, например, «UTC+01:00»

QTimeZone::OffsetDataList

Синоним для QList<OffsetData>.

enum QTimeZone::TimeType

Тип времени часового пояса, например, при запросе имени. В часовых поясах, где не применяется летнее время, все три значения могут возвращать один и тот же результат.

Постоянная Значение Описание
QTimeZone::StandardTime 0 Стандартное время в часовом поясе, т. е. когда летнее время не действует. Например, при форматировании имени отображения это будет отображено как «Тихоокеанское стандартное время».
QTimeZone::DaylightTime 1 Время, когда действует летнее время. Например, при форматировании имени отображения это будет отображено как «Тихоокеанское летнее время».
QTimeZone::GenericTime 2 Время, которое не является явно стандартным или летним временем, либо неизвестное время, либо нейтральная форма. Например, при форматировании имени отображения это будет отображено как «Тихоокеанское время».

enum QTimeZone::anonymous

Нормальный диапазон смещений UTC от -14 до +14 часов. Неизвестный часовой пояс > 12 часов к западу от Гринвича (остров Бейкер, США). Неизвестный часовой пояс > 14 часов к востоку от Гринвича (Килиманути, остров Рождества, Кирибати).

Постоянная Значение Описание
QTimeZone::MinUtcOffsetSecs -14 * 3600 -14 * 3600,
QTimeZone::MaxUtcOffsetSecs +14 * 3600 +14 * 3600

Документация по функциям членов

QTimeZone::QTimeZone(const QTimeZone &other)

Копирующий конструктор, копирует other в этот.

QTimeZone::QTimeZone(const QByteArray &ianaId, int offsetSeconds, const QString &name, const QString &abbreviation, QLocale::Country country = QLocale::AnyCountry, const QString &comment = QString())

Создает пользовательский часовой пояс с идентификатором ianaId и смещением от UTC offsetSeconds. name будет именем, используемым функцией displayName() для LongName, abbreviation будет использоваться функцией displayName() для ShortName и abbreviation(), а необязательное country будет использоваться функцией country(). comment — это необязательная заметка, которая может отображаться в графическом интерфейсе пользователя для помощи пользователям в выборе часового пояса.

ianaId не должен быть одним из доступных системных идентификаторов, возвращаемых функцией availableTimeZoneIds(). offsetSeconds от UTC должен быть в диапазоне от -14 до +14 часов.

Если у пользовательского часового пояса нет определенной страны, установите его в значение по умолчанию QLocale::AnyCountry.

QTimeZone::QTimeZone(int offsetSeconds)

Создает экземпляр часового пояса с заданным смещением от UTC offsetSeconds.

offsetSeconds от UTC должен быть в диапазоне от -14 до +14 часов, иначе будет возвращен неверный часовой пояс.

QTimeZone::QTimeZone(const QByteArray &ianaId)

Создает экземпляр запрошенного часового пояса ianaId.

Идентификатор должен быть одним из доступных системных идентификаторов или допустимым идентификатором UTC со смещением, иначе будет возвращен неверный часовой пояс.

См. также availableTimeZoneIds().

QTimeZone::QTimeZone()

Создает экземпляр пустого/недействительного часового пояса.

QTimeZone &QTimeZone::operator=(QTimeZone &&other)

Перемещает присваивание other этому экземпляру QTimeZone, передавая владение управляемым указателем этому экземпляру.

END_OF_DOCUMENT_MARKER

QTimeZone &QTimeZone::operator=(const QTimeZone &other)

Оператор присваивания, присваивает other этому объекту.

QTimeZone::~QTimeZone()

Уничтожает часовой пояс.

QString QTimeZone::abbreviation(const QDateTime &atDateTime) const

Возвращает сокращение часового пояса в заданный момент времени atDateTime. Сокращение может меняться в зависимости от летнего времени или даже исторических событий.

Обратите внимание, что сокращение не гарантированно уникально для этого часового пояса и не должно использоваться вместо идентификатора или отображаемого имени.

См. также displayName().

[static] QList<QByteArray> QTimeZone::availableTimeZoneIds()

Возвращает список всех доступных идентификаторов часовых поясов IANA в этой системе.

См. также isTimeZoneIdAvailable().

[static] QList<QByteArray> QTimeZone::availableTimeZoneIds(QLocale::Country country)

Возвращает список всех доступных идентификаторов часовых поясов IANA для заданной страны country.

В качестве специального случая, country со значением Qt::AnyCountry возвращает часовые пояса, не связанные ни с какой конкретной страной, такие как UTC. Если вам нужен список всех идентификаторов часовых поясов для всех стран, используйте стандартный метод availableTimeZoneIds().

См. также isTimeZoneIdAvailable().

[static] QList<QByteArray> QTimeZone::availableTimeZoneIds(int offsetSeconds)

Возвращает список всех доступных идентификаторов часовых поясов IANA с заданным стандартным смещением по времени offsetSeconds.

См. также isTimeZoneIdAvailable().

QString QTimeZone::comment() const

Возвращает любой комментарий к часовому поясу.

Комментарий может быть предоставлен хостовой платформой для помощи пользователям в выборе правильного часового пояса. В зависимости от платформы он может не быть локализован.

QLocale::Country QTimeZone::country() const

Возвращает страну для часового пояса.

int QTimeZone::daylightTimeOffset(const QDateTime &atDateTime) const

Возвращает смещение летнего времени в заданный момент времени atDateTime, т.е. количество секунд, которое нужно добавить к стандартному смещению времени, чтобы получить местное смещение летнего времени.

Например, для часового пояса «Europe/Berlin» смещение летнего времени составляет +3600 секунд. В стандартное время daylightTimeOffset() возвращает 0, а когда летнее время действует, оно возвращает +3600.

См. также offsetFromUtc() и standardTimeOffset().

QString QTimeZone::displayName(const QDateTime &atDateTime, QTimeZone::NameType nameType = QTimeZone::DefaultName, const QLocale &locale = QLocale()) const

Возвращает локализованное имя часового пояса в заданный момент времени atDateTime для заданного типа имени nameType в заданной локали locale. Запрошенный тип имени и локали могут не поддерживаться на всех платформах, в этом случае будет возвращен наилучший доступный вариант.

Если locale не указана, используется локаль по умолчанию приложения.

Имя может меняться в зависимости от летнего времени или исторических событий.

См. также abbreviation().

QString QTimeZone::displayName(QTimeZone::TimeType timeType, QTimeZone::NameType nameType = QTimeZone::DefaultName, const QLocale &locale = QLocale()) const

Возвращает локализованное имя часового пояса для заданного типа времени timeType и типа имени nameType в заданной локали locale. Запрошенный тип имени и локали могут не поддерживаться на всех платформах, в этом случае будет возвращен наилучший доступный вариант.

Если locale не указана, используется локаль по умолчанию приложения.

Если имена часовых поясов менялись со временем, будут использоваться самые последние имена.

См. также abbreviation().

[static, since 5.9] QTimeZone QTimeZone::fromCFTimeZone(CFTimeZoneRef timeZone)

Создает новый QTimeZone, содержащий копию CFTimeZone timeZone.

Эта функция была добавлена в Qt 5.9.

См. также toCFTimeZone().

[static, since 5.9] QTimeZone QTimeZone::fromNSTimeZone(const NSTimeZone *timeZone)

Создает новый QTimeZone, содержащий копию NSTimeZone timeZone.

Эта функция была добавлена в Qt 5.9.

См. также toNSTimeZone().

bool QTimeZone::hasDaylightTime() const

Возвращает true если часовой пояс когда-либо использовал летнее время.

См. также isDaylightTime() и daylightTimeOffset().

bool QTimeZone::hasTransitions() const

Возвращает true если системный бэкэнд поддерживает получение переходов.

Переходы — это изменения часового пояса: они происходят, когда ЛВ включается или выключается и когда власти изменяют смещения для часового пояса.

См. также nextTransition(), previousTransition() и transitions().

[static] QByteArray QTimeZone::ianaIdToWindowsId(const QByteArray &ianaId)

Возвращает эквивалент идентификатора Windows, соответствующий заданному ianaId.

См. также windowsIdToDefaultIanaId() и windowsIdToIanaIds().

QByteArray QTimeZone::id() const

Возвращает идентификатор IANA для часового пояса.

Идентификаторы IANA используются на всех платформах. В Windows они переводятся из идентификатора Windows в наиболее близкий идентификатор IANA для часового пояса и страны.

bool QTimeZone::isDaylightTime(const QDateTime &atDateTime) const

Возвращает true если летнее время действовало в заданный момент времени atDateTime.

См. также hasDaylightTime() и daylightTimeOffset().

[static] bool QTimeZone::isTimeZoneIdAvailable(const QByteArray &ianaId)

Возвращает true если заданный идентификатор часового пояса ianaId доступен в этой системе.

См. также availableTimeZoneIds().

bool QTimeZone::isValid() const

Возвращает true если данный часовой пояс является корректным.

QTimeZone::OffsetData QTimeZone::nextTransition(const QDateTime &afterDateTime) const

Возвращает первый переход часового пояса после заданного afterDateTime. Это наиболее полезно, когда у вас есть время перехода и вы хотите найти переход после него.

Если перехода после заданного afterDateTime нет, возвращается недействительный объект OffsetData с недействительной QDateTime.

Заданный afterDateTime исключается.

См. также hasTransitions(), previousTransition() и transitions().

QTimeZone::OffsetData QTimeZone::offsetData(const QDateTime &forDateTime) const

Возвращает подробную информацию о смещении в заданный момент forDateTime. Это эквивалентно вызову offsetFromUtc(), abbreviation() и т.д. по отдельности, но более эффективно.

См. также offsetFromUtc(), standardTimeOffset(), daylightTimeOffset() и abbreviation().

int QTimeZone::offsetFromUtc(const QDateTime &atDateTime) const

Возвращает общий эффективный смещение по заданному atDateTime, т.е. количество секунд, которое нужно добавить к UTC для получения местного времени. Это включает любой смещение по летнему времени, которое может действовать, т.е. это сумма standardTimeOffset() и daylightTimeOffset() для заданной даты и времени.

Например, для часового пояса "Europe/Berlin" стандартное смещение составляет +3600 секунд, а смещение по летнему времени — +3600 секунд. В стандартное время offsetFromUtc() вернет +3600 (UTC+01:00), а в летнее время — +7200 (UTC+02:00).

См. также standardTimeOffset() и daylightTimeOffset().

QTimeZone::OffsetData QTimeZone::previousTransition(const QDateTime &beforeDateTime) const

Возвращает первое переходное время часового пояса до заданного beforeDateTime. Это наиболее полезно, когда у вас есть время перехода и вы хотите найти переход до него.

Если нет перехода до заданного beforeDateTime, то будет возвращена недействительная OffsetData с недействительной QDateTime.

Указанное beforeDateTime исключено.

См. также hasTransitions(), nextTransition() и transitions().

int QTimeZone::standardTimeOffset(const QDateTime &atDateTime) const

Возвращает стандартное смещение времени по заданному atDateTime, т.е. количество секунд, которое нужно добавить к UTC для получения местного стандартного времени. Это не включает смещение по летнему времени, которое может действовать.

Например, для часового пояса "Europe/Berlin" стандартное смещение составляет +3600 секунд. В стандартное и летнее время offsetFromUtc() вернет +3600 (UTC+01:00).

См. также offsetFromUtc() и daylightTimeOffset().

void QTimeZone::swap(QTimeZone &other)

Меняет местами экземпляр часового пояса с other. Эта функция очень быстрая и никогда не терпит неудачу.

[static, since 5.5] QTimeZone QTimeZone::systemTimeZone()

Возвращает объект QTimeZone, который относится к местному системному времени, как указано в systemTimeZoneId().

Эта функция была представлена в Qt 5.5.

См. также utc().

[static] QByteArray QTimeZone::systemTimeZoneId()

Возвращает текущий системный часовой пояс IANA ID.

В Windows этот идентификатор переводится из идентификатора Windows с использованием внутренней таблицы преобразования и выбранной страной пользователя. Вследствие этого существует небольшая вероятность того, что любая установка Windows может иметь идентификаторы, неизвестные Qt, в этом случае будет возвращено «UTC».

[since 5.9] CFTimeZoneRef QTimeZone::toCFTimeZone() const

Создает CFTimeZone из QTimeZone.

Вызывающая сторона владеет объектом CFTimeZone и отвечает за его освобождение.

Эта функция была представлена в Qt 5.9.

См. также fromCFTimeZone().

[since 5.9] NSTimeZone *QTimeZone::toNSTimeZone() const

Создает NSTimeZone из QTimeZone.

Объект NSTimeZone автоматически освобождается.

Эта функция была представлена в Qt 5.9.

См. также fromNSTimeZone().

QTimeZone::OffsetDataList QTimeZone::transitions(const QDateTime &fromDateTime, const QDateTime &toDateTime) const

Возвращает список всех переходов часового пояса между заданными датами и временем.

Указанные fromDateTime и toDateTime включены.

См. также hasTransitions(), nextTransition() и previousTransition().

[static, since 5.5] QTimeZone QTimeZone::utc()

Возвращает объект QTimeZone, который относится к UTC (Всемирное координированное время).

Эта функция была представлена в Qt 5.5.

См. также systemTimeZone().

[static] QByteArray QTimeZone::windowsIdToDefaultIanaId(const QByteArray &windowsId)

Возвращает стандартный IANA ID для заданного windowsId.

Поскольку идентификатор Windows может охватывать несколько IANA ID в нескольких разных странах, эта функция возвращает наиболее часто используемый IANA ID без учета страны и поэтому должна использоваться с осторожностью. Обычно лучше запрашивать стандартное значение для конкретной страны.

См. также ianaIdToWindowsId() и windowsIdToIanaIds().

[static] QByteArray QTimeZone::windowsIdToDefaultIanaId(const QByteArray &windowsId, QLocale::Country country)

Возвращает стандартный IANA ID для заданного windowsId и country.

Поскольку идентификатор Windows может охватывать несколько IANA ID в данной стране, возвращается наиболее часто используемый IANA ID в этой стране.

В качестве специального случая QLocale::AnyCountry возвращает стандартное значение тех IANA ID, у которых нет конкретной страны.

См. также ianaIdToWindowsId() и windowsIdToIanaIds().

[static] QList<QByteArray> QTimeZone::windowsIdToIanaIds(const QByteArray &windowsId)

Возвращает все IANA ID для заданного windowsId.

Возвращаемый список отсортирован по алфавиту.

См. также ianaIdToWindowsId() и windowsIdToDefaultIanaId().

[static] QList<QByteArray> QTimeZone::windowsIdToIanaIds(const QByteArray &windowsId, QLocale::Country country)

Возвращает все IANA ID для заданного windowsId и country.

В качестве специального случая QLocale::AnyCountry возвращает те IANA ID, у которых нет конкретной страны.

Возвращаемый список упорядочен по частоте использования, т.е. более крупные зоны в стране перечислены первыми.

См. также ianaIdToWindowsId() и windowsIdToDefaultIanaId().

bool QTimeZone::operator!=(const QTimeZone &other) const

Возвращает true если этот часовой пояс не равен часовому поясу other.

bool QTimeZone::operator==(const QTimeZone &other) const

Возвращает true если этот часовой пояс равен часовому поясу other.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qtimezone.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API