Класс QTimeZone
Класс QTimeZone преобразует время между UTC и местным временем в определенной временной зоне. Подробнее...
| Заголовок: | #include <QTimeZone> |
| qmake: | QT += core |
| С момента: | Qt 5.2 |
Этот класс был представлен в 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 и местным временем в определенной временной зоне. По умолчанию он использует данные о временной зоне хост-системы для выполнения этих преобразований.
END_OF_DOCUMENT_MARKERЭтот класс предназначен в основном для использования с QDateTime; большинство приложений не будут нуждаться в прямом доступе к этому классу и вместо этого должны использовать QDateTime с Qt::TimeSpec типа Qt::TimeZone.
Примечание: Для согласованности с QDateTime, QTimeZone не учитывает високосные секунды.
Комментарии
Идентификаторы часовых поясов IANA
QTimeZone использует идентификаторы часовых поясов IANA, определённые в базе данных часовых поясов IANA (http://www.iana.org/time-zones). Это необходимо для обеспечения стандартного идентификатора на всех поддерживаемых платформах. Большинство платформ поддерживают идентификаторы IANA и базу данных IANA напрямую, но для Windows требуется отображение на собственные идентификаторы. Более подробную информацию см. ниже.
Идентификаторы IANA могут и меняются регулярно и могут варьироваться в зависимости от того, насколько недавно данные системы были обновлены. Поэтому нельзя полагаться на существование конкретного идентификатора на любой системе. Для определения доступных идентификаторов IANA необходимо использовать availableTimeZoneIds().
Идентификаторы и база данных 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» |
typedef QTimeZone::OffsetDataList
Синоним для QVector<OffsetData>.
enum QTimeZone::TimeType
Тип времени часового пояса, например, при запросе имени. В часовых поясах, в которых DST не применяется, все три значения могут возвращать один и тот же результат.
| Константа | Значение | Описание |
|---|---|---|
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.
Идентификатор должен быть одним из доступных системных идентификаторов, в противном случае будет возвращён недопустимый часовой пояс.
См. также availableTimeZoneIds().
QTimeZone::QTimeZone()
Создаёт пустой/недействительный экземпляр часового пояса.
QTimeZone &QTimeZone::operator=(QTimeZone &&other)
Оператор присваивания перемещения, присваивает other этому экземпляру QTimeZone, передавая владение управляемым указателем этому экземпляру.
QTimeZone &QTimeZone::operator=(const QTimeZone &other)
Оператор присваивания, присваивает other этому объекту.
END_OF_DOCUMENT_MARKERQTimeZone::~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 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. Запрашиваемые nameType и locale могут быть не поддерживаемыми на всех платформах, в этом случае будет возвращён лучший доступный вариант.
Если locale не указана, используется локаль по умолчанию приложения.
Имя для отображения может меняться в зависимости от летнего времени или исторических событий.
См. также abbreviation().
QString QTimeZone::displayName(QTimeZone::TimeType timeType, QTimeZone::NameType nameType = QTimeZone::DefaultName, const QLocale &locale = QLocale()) const
Возвращает локализованное отображаемое имя часового пояса для заданного timeType и nameType в заданной locale. Запрашиваемые nameType и locale могут быть не поддерживаемыми на всех платформах, в этом случае будет возвращён лучший доступный вариант.
Если locale не указана, используется локаль по умолчанию приложения.
Если названия часовых поясов менялись со временем, будут использоваться самые последние названия.
См. также abbreviation().
[static] QTimeZone QTimeZone::fromCFTimeZone(CFTimeZoneRef timeZone)
Создаёт новый QTimeZone, содержащий копию CFTimeZone timeZone.
Эта функция была добавлена в Qt 5.9.
См. также toCFTimeZone().
[static] 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] QTimeZone QTimeZone::systemTimeZone()
Возвращает объект QTimeZone, который ссылается на местное системное время, как указано в systemTimeZoneId().
Эта функция была добавлена в Qt 5.5.
См. также utc().
[static] QByteArray QTimeZone::systemTimeZoneId()
Возвращает текущий системный часовой пояс IANA ID.
В Windows этот ID преобразуется из Windows ID с использованием внутренней таблицы преобразования и выбранной страной пользователя. Вследствие этого существует небольшая вероятность, что в любой установке Windows могут быть ID, неизвестные Qt, в этом случае будет возвращено "UTC".
CFTimeZoneRef QTimeZone::toCFTimeZone() const
Создаёт CFTimeZone из QTimeZone. Вызывающая сторона владеет объектом CFTimeZone и отвечает за его освобождение.
Эта функция была добавлена в Qt 5.9.
См. также fromCFTimeZone().
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] 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-5.13/qtimezone.html