En esta página

QTimeZone Class

QTimeZone identifica como una representación de tiempo se relaciona con UTC. Más...

Cabecera: #include <QTimeZone>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Esta clase es igual-comparable.

Nota: Todas las funciones de esta clase son thread-safe.

Tipos Públicos

struct OffsetData
(since 6.5) enum Initialization { LocalTime, UTC }
enum NameType { DefaultName, LongName, ShortName, OffsetName }
OffsetDataList
enum TimeType { StandardTime, DaylightTime, GenericTime }

Funciones Públicas

QTimeZone()
(since 6.5) QTimeZone(QTimeZone::Initialization spec)
QTimeZone(const QByteArray &ianaId)
QTimeZone(int offsetSeconds)
QTimeZone(const QByteArray &zoneId, int offsetSeconds, const QString &name, const QString &abbreviation, QLocale::Territory territory = QLocale::AnyTerritory, const QString &comment = QString())
QTimeZone(const QTimeZone &other)
QTimeZone(QTimeZone &&other)
~QTimeZone()
QString abbreviation(const QDateTime &atDateTime) const
(since 6.5) QTimeZone asBackendZone() const
QString comment() const
int daylightTimeOffset(const QDateTime &atDateTime) const
QString displayName(QTimeZone::TimeType timeType, QTimeZone::NameType nameType = DefaultName, const QLocale &locale = QLocale()) const
QString displayName(const QDateTime &atDateTime, QTimeZone::NameType nameType = DefaultName, const QLocale &locale = QLocale()) const
(since 6.5) int fixedSecondsAheadOfUtc() const
(since 6.8) bool hasAlternativeName(QByteArrayView alias) const
bool hasDaylightTime() const
bool hasTransitions() const
QByteArray id() const
bool isDaylightTime(const QDateTime &atDateTime) const
(since 6.5) bool isUtcOrFixedOffset() 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)
(since 6.2) QLocale::Territory territory() const
(since 6.5) Qt::TimeSpec timeSpec() const
CFTimeZoneRef toCFTimeZone() const
NSTimeZone *toNSTimeZone() const
QTimeZone::OffsetDataList transitions(const QDateTime &fromDateTime, const QDateTime &toDateTime) const
QTimeZone &operator=(QTimeZone &&other)
QTimeZone &operator=(const QTimeZone &other)

Miembros públicos estáticos

const int MaxUtcOffsetSecs
const int MinUtcOffsetSecs
QList<QByteArray> availableTimeZoneIds()
QList<QByteArray> availableTimeZoneIds(QLocale::Territory territory)
QList<QByteArray> availableTimeZoneIds(int offsetSeconds)
QTimeZone fromCFTimeZone(CFTimeZoneRef timeZone)
(since 6.5) QTimeZone fromDurationAheadOfUtc(std::chrono::seconds offset)
QTimeZone fromNSTimeZone(const NSTimeZone *timeZone)
(since 6.5) QTimeZone fromSecondsAheadOfUtc(int offset)
(since 6.4) QTimeZone fromStdTimeZonePtr(const int *timeZone)
QByteArray ianaIdToWindowsId(const QByteArray &ianaId)
bool isTimeZoneIdAvailable(const QByteArray &ianaId)
(since 6.5) bool isUtcOrFixedOffset(Qt::TimeSpec spec)
QTimeZone systemTimeZone()
QByteArray systemTimeZoneId()
QTimeZone utc()
QByteArray windowsIdToDefaultIanaId(const QByteArray &windowsId)
QByteArray windowsIdToDefaultIanaId(const QByteArray &windowsId, QLocale::Territory territory)
QList<QByteArray> windowsIdToIanaIds(const QByteArray &windowsId)
QList<QByteArray> windowsIdToIanaIds(const QByteArray &windowsId, QLocale::Territory territory)
bool operator!=(const QTimeZone &lhs, const QTimeZone &rhs)
bool operator==(const QTimeZone &lhs, const QTimeZone &rhs)

Descripción detallada

Cuando se combinan fechas y horas, el significado del resultado depende de cómo se represente el tiempo. Existen varios estándares internacionales para representar la hora; uno de ellos, UTC, corresponde al estándar tradicional de la hora media solar en Greenwich (también conocido como GMT). Todos los demás sistemas de tiempo soportados por Qt se especifican en última instancia en relación con UTC. Una instancia de esta clase proporciona una calculadora sin estado para conversiones entre UTC y otras representaciones de tiempo.

Algunas representaciones de tiempo se definen simplemente en un desplazamiento fijo a UTC. Otras son definidas por los gobiernos para su uso dentro de sus jurisdicciones. Estas últimas se conocen propiamente como zonas horarias, pero QTimeZone (desde Qt 6.5) unifica su representación con la de los sistemas horarios generales. Una zona horaria generalmente soportada en la mayoría de los sistemas operativos es la designada como hora local; se supone que corresponde a la zona horaria en la que vive el usuario.

Para las zonas horarias distintas de la hora local, UTC y las que se encuentran a desviaciones fijas de UTC, Qt sólo puede proporcionar soporte cuando el sistema operativo proporciona alguna forma de acceder a esa información. Cuando se construye Qt, la función timezone controla si dicha información está disponible. Cuando no lo está, algunos constructores y métodos de QTimeZone están excluidos de su API; estos están documentados como dependientes de la característica timezone. Tenga en cuenta que, incluso cuando Qt se construye con esta característica activada, puede no estar disponible para los usuarios cuyos sistemas estén mal configurados, o donde algunos paquetes estándar (por ejemplo, el paquete tzdata en Linux) no estén instalados. Esta función está activada por defecto cuando se dispone de información sobre la zona horaria.

Esta clase está diseñada principalmente para su uso en QDateTime; la mayoría de las aplicaciones no necesitarán acceder a esta clase directamente y, en su lugar, deberían utilizar una instancia de la misma cuando construyan un QDateTime.

Nota: Por coherencia con QDateTime, QTimeZone no tiene en cuenta los segundos intercalares.

Observaciones

QTimeZone, al igual que QDateTime, mide las desviaciones de UTC en segundos. Esto contrasta con su medición del tiempo en general, que lo hace en milisegundos. Las zonas horarias del mundo real suelen tener desfases de UTC que son múltiplos enteros de cinco minutos (300 segundos), al menos desde mucho antes de 1970. Un desfase positivo respecto a UTC da una representación de la hora que sitúa el mediodía de un día determinado antes del mediodía UTC de ese día; un desfase negativo sitúa el mediodía después del mediodía UTC de ese mismo día.

Representaciones horarias ligeras

QTimeZone puede representar UTC, hora local y desfases fijos desde UTC incluso cuando la función timezone está desactivada. La forma en que lo hace también está disponible cuando la función está habilitada; es una forma más ligera y el procesamiento que la utiliza será normalmente más eficiente, a menos que se estén utilizando métodos que sólo están disponibles cuando la función timezone está habilitada. Consulte Initialization y QTimeZone::fromSecondsAheadOfUtc(int) para saber cómo construir estas representaciones.

Esta documentación distingue entre "zona horaria", utilizada para describir una representación horaria descrita por información estándar o suministrada por el sistema, y representaciones horarias más generales, que incluyen estas formas ligeras. Los métodos disponibles sólo cuando la función timezone está activada suelen ser más baratos para los husos horarios que para las representaciones horarias ligeras, para las que estos métodos pueden construir un objeto de huso horario transitorio adecuado al que reenviar la consulta.

ID de zonas horarias IANA

QTimeZone utiliza los ID de zonas horarias de IANA definidos en la base de datos de zonas horarias de IANA (http://www.iana.org/time-zones). Esto es para asegurar un ID estándar en todas las plataformas soportadas. La mayoría de las plataformas soportan los IDs de IANA y la Base de Datos de IANA de forma nativa, pero para Windows se requiere un mapeo a los IDs nativos. Para más información, véase más abajo.

Los ID de IANA pueden cambiar y lo hacen de forma regular, y pueden variar dependiendo de lo reciente que haya sido la actualización de los datos del sistema host. Por lo tanto, no puede confiar en que un ID determinado exista en cualquier sistema host. Debe utilizar availableTimeZoneIds() para determinar qué ID de IANA están disponibles.

Los ID y la base de datos de IANA también se conocen como ID y base de datos de Olson, nombre del compilador original de la base de datos.

Husos horarios UTC

Se proporciona una zona horaria UTC por defecto que siempre está disponible cuando la función timezone está activada. Proporciona un conjunto de zonas horarias genéricas con desfase respecto a UTC en el intervalo UTC-16:00 a UTC+16:00. Estas zonas horarias pueden crearse utilizando cualquiera de los métodos siguientes Estas zonas horarias pueden crearse utilizando los nombres de formato ISO estándar, como "UTC+00:00", tal y como aparecen en availableTimeZoneIds(), o utilizando un nombre de forma similar en combinación con el número de segundos de desfase.

Husos horarios de Windows

El soporte de zonas horarias nativo de Windows es muy limitado en comparación con la base de datos TZ estándar de IANA. Las zonas horarias de Windows cubren áreas geográficas más grandes y, por lo tanto, son menos precisas en sus conversiones. Tampoco admiten tantos datos históricos, por lo que es posible que sólo sean precisas para el año en curso. En particular, cuando los datos de zona de MS afirman que el horario de verano se observaba antes de 1900 (se sabe históricamente que esto no es cierto), se ignora la afirmación y se considera que la hora estándar (supuestamente) vigente en 1900 siempre ha estado en vigor.

QTimeZone utiliza una tabla de conversión derivada de los datos Unicode CLDR para establecer la correspondencia entre los ID de IANA y los ID de Windows. Dependiendo de su versión de Windows y Qt, esta tabla puede no ser capaz de proporcionar una conversión válida, en la que se devolverá "UTC".

QTimeZone proporciona una API pública para utilizar esta tabla de conversión. El ID de Windows utilizado es la clave del registro de Windows para la zona horaria, que es también el ID de MS Exchange EWS, pero es diferente al nombre de la zona horaria (TZID) y el código COD utilizado por MS Exchange en versiones anteriores a 2007.

Nota: Cuando Qt se construye con la librería ICU, ésta se usa con preferencia a las APIs del sistema Windows, obviando todos los problemas con esas APIs que usan nombres diferentes.

Zona horaria del sistema

El método systemTimeZoneId() devuelve el ID de la zona horaria actual del sistema IANA, que en sistemas tipo Unix siempre será correcto. En Windows este ID se traduce a partir del ID del sistema Windows utilizando una tabla de traducción interna y el país seleccionado por el usuario. Como consecuencia, hay una pequeña posibilidad de que cualquier instalación de Windows pueda tener IDs no conocidos por Qt, en cuyo caso se devolverá "UTC".

Crear una nueva instancia de QTimeZone usando el ID de la zona horaria del sistema sólo producirá una copia con nombre fijo de la zona horaria, no cambiará si la zona horaria del sistema cambia. QTimeZone::systemTimeZone() devolverá una instancia que representa la zona nombrada por este ID de sistema. Tenga en cuenta que la construcción de un QDateTime que utilice esta zona horaria del sistema puede comportarse de forma diferente a la construcción de un QDateTime que utilice Qt::LocalTime como su Qt::TimeSpec, ya que este último utiliza directamente las API del sistema para acceder a la información horaria local, que puede comportarse de forma diferente (y, en particular, podría adaptarse si el usuario ajusta la configuración de la zona horaria del sistema).

Desfases horarios

La diferencia entre UTC y la hora local en una zona horaria se expresa como un desfase en segundos con respecto a UTC, es decir, el número de segundos que hay que añadir a UTC para obtener la hora local. El desfase total consta de dos partes: el desfase horario estándar y el desfase horario de verano. El desfase horario estándar es el número de segundos que hay que añadir a UTC para obtener la hora estándar en la zona horaria. El desfase horario de verano es el número de segundos que hay que añadir al desfase horario estándar para obtener el horario de verano en la zona horaria. El caso habitual de horario de verano (horario estándar en invierno y horario de verano) tiene un desfase horario positivo. Sin embargo, algunas zonas tienen desfases horarios negativos, que se utilizan en invierno, mientras que en verano se utiliza la hora estándar.

Tenga en cuenta que los desfases estándar y DST para una zona horaria pueden cambiar con el tiempo, ya que los países han cambiado las leyes DST o incluso su desfase horario estándar.

Licencia

Esta clase incluye datos obtenidos de los archivos de datos CLDR bajo los términos de la Licencia de Archivos de Datos y Software de Unicode. Véase Unicode Common Locale Data Repository (CLDR) para más detalles.

Véase también QDateTime y QCalendar.

Documentación de tipos de miembros

[since 6.5] enum QTimeZone::Initialization

El tipo de las representaciones temporales ligeras más sencillas.

Esta enumeración identifica un tipo de representación temporal ligera para pasar a un constructor de QTimeZone, donde no se requieren más datos. Corresponden a los miembros del mismo nombre de Qt::TimeSpec.

ConstanteValorDescripción
QTimeZone::LocalTime0Esta representación de la hora corresponde a la utilizada implícitamente por las funciones del sistema que utilizan los valores time_t y struct tm para establecer la correspondencia entre la hora local y la hora UTC.
QTimeZone::UTC1Esta representación de la hora, el Tiempo Universal Coordinado, es la representación base a la que se refiere la hora civil en todas las representaciones de la hora soportadas. Está definida por la Unión Internacional de Telecomunicaciones.

Este enum se introdujo en Qt 6.5.

enum QTimeZone::NameType

El tipo de nombre de la zona horaria.

ConstanteValorDescripción
QTimeZone::DefaultName0La forma predeterminada del nombre de la zona horaria, una de LongName, ShortName o OffsetName
QTimeZone::LongName1La forma larga del nombre de la zona horaria, por ejemplo, "Central European Time".
QTimeZone::ShortName2La forma abreviada del nombre de la zona horaria, normalmente una abreviatura, p. ej. "CET", en las localidades que tienen una para la zona; de lo contrario, una forma compacta de desplazamiento GMT, p. ej. "GMT+1".
QTimeZone::OffsetName3La forma estándar ISO del nombre de la zona horaria, por ejemplo "UTC+01:00".

Este tipo sólo está disponible cuando la función timezone está activada.

QTimeZone::OffsetDataList

Sinónimo de QList<OffsetData>.

Este tipo sólo está disponible cuando la función timezone está activada.

enum QTimeZone::TimeType

El nombre de una zona horaria puede variar según la estación para indicar si está utilizando su desfase estándar con respecto a UTC o si está aplicando un ajuste de horario de verano a ese desfase. En estos casos, también suele tener un nombre general que se le aplica independientemente de la estación. Cuando se solicita el nombre para mostrar de una zona, este tipo identifica cuál de esos nombres debe utilizarse. En las zonas horarias que no aplican el horario de verano, los tres valores pueden devolver el mismo resultado.

ConstanteValorDescripción
QTimeZone::StandardTime0El nombre de hora estándar de la zona. Por ejemplo, "Hora estándar del Pacífico".
QTimeZone::DaylightTime1El nombre de la zona cuando está en vigor el horario de verano. Por ejemplo, "Pacific Daylight Time".
QTimeZone::GenericTime2El nombre con el que se describe la zona independientemente de si está aplicando algún ajuste de horario de verano. Por ejemplo, "Hora del Pacífico".

Este tipo sólo está disponible cuando la función timezone está activada.

Documentación de la función de miembro

[noexcept] QTimeZone::QTimeZone()

Crear una instancia de zona horaria nula/inválida.

[noexcept, since 6.5] QTimeZone::QTimeZone(QTimeZone::Initialization spec)

Crea una instancia ligera que describe la hora UTC o local.

Esta función se introdujo en Qt 6.5.

Véase también fromSecondsAheadOfUtc(), asBackendZone(), utc() y systemTimeZone().

[explicit] QTimeZone::QTimeZone(const QByteArray &ianaId)

Crea una instancia de zona horaria con el ID de IANA solicitado ianaId.

El ID debe ser uno de los ID de sistema disponibles o un ID UTC-with-offset válido; de lo contrario, se devolverá una zona horaria no válida. En el caso de los identificadores UTC-with-offset, cuando no son identificadores IANA, la dirección id() de la instancia resultante puede diferir del identificador pasado al constructor.

Este constructor sólo está disponible cuando la función timezone está activada.

Véase también availableTimeZoneIds() y id().

[explicit] QTimeZone::QTimeZone(int offsetSeconds)

Crea una instancia de zona horaria con el desplazamiento dado, offsetSeconds, desde UTC.

El offsetSeconds de UTC debe estar en el rango -16 horas a +16 horas de lo contrario se devolverá una zona horaria inválida.

Este constructor sólo está disponible cuando la función timezone está activada. La instancia devuelta es equivalente a la representación horaria ligera QTimeZone::fromSecondsAheadOfUtc(offsetSeconds), aunque implementada como zona horaria.

Véase también MinUtcOffsetSecs, MaxUtcOffsetSecs, y id().

QTimeZone::QTimeZone(const QByteArray &zoneId, int offsetSeconds, const QString &name, const QString &abbreviation, QLocale::Territory territory = QLocale::AnyTerritory, const QString &comment = QString())

Crea una instancia de zona horaria personalizada con un desfase fijo respecto a UTC.

La zona horaria devuelta tiene un ID de zoneId y un desfase con respecto a UTC de offsetSeconds. name será el nombre utilizado por displayName() para LongName, abbreviation será utilizado por displayName() para ShortName y por abbreviation(), y territory opcional será utilizado por territory(). El comment es una nota opcional que puede mostrarse en una GUI para ayudar a los usuarios a seleccionar una zona horaria.

El offsetSeconds de UTC debe estar en el rango de -16 horas a +16 horas. zoneId no debe ser un ID para el que isTimeZoneIdAvailable() sea verdadero, a menos que sea un nombre de zona horaria UTC que no aparezca en availableTimeZoneIds().

Si la zona horaria personalizada no tiene un territorio específico, entonces ajústelo al valor por defecto de QLocale::AnyTerritory.

Este constructor sólo está disponible cuando la función timezone está activada.

Véase también id(), offsetFromUtc(), displayName(), abbreviation(), territory(), comment(), MinUtcOffsetSecs, y MaxUtcOffsetSecs.

[noexcept] QTimeZone::QTimeZone(const QTimeZone &other)

Copiar constructor: copia other a esto.

[noexcept] QTimeZone::QTimeZone(QTimeZone &&other)

Mueve el constructor de esto de other.

[noexcept] QTimeZone::~QTimeZone()

Destruye la zona horaria.

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

Devuelve la abreviatura de la zona horaria en la dirección atDateTime.

La abreviatura puede cambiar en función del horario de verano o incluso de acontecimientos históricos.

Nota: no se garantiza que la abreviatura sea exclusiva de esta zona horaria y no debe utilizarse en lugar del ID o del nombre para mostrar. La abreviatura puede estar localizada, dependiendo del sistema operativo subyacente. Para obtener una localización coherente, utilice displayName(atDateTime, QTimeZone::ShortName, locale).

Este método sólo está disponible cuando la función timezone está activada.

Véase también displayName().

[since 6.5] QTimeZone QTimeZone::asBackendZone() const

Convierte este QTimeZone en otro cuyo timeSpec() es Qt::TimeZone.

En todos los casos, el timeSpec() del resultado es Qt::TimeZone. Cuando este QTimeZone's timeSpec() es Qt::TimeZone, se devuelve este QTimeZone mismo. Si timeSpec() es Qt::LocalTime entonces se devuelve systemTimeZone().

Si timeSpec() es Qt::UTC, se devuelve QTimeZone::utc(). Si es Qt::OffsetFromUTC entonces a QTimeZone(int) se le pasa su offset y se devuelve el resultado.

Cuando se utiliza una representación horaria ligera (hora local, hora UTC u hora con un desfase fijo con respecto a UTC), el uso de métodos que sólo se admiten cuando la función timezone está activada puede resultar más costoso que el uso de una zona horaria correspondiente. Este método asigna una representación horaria ligera a una zona horaria correspondiente, es decir, una instancia basada en datos estándar o suministrados por el sistema.

Este método sólo está disponible cuando la función timezone está activada.

Esta función se introdujo en Qt 6.5.

Véase también QTimeZone(QTimeZone::Initialization) y fromSecondsAheadOfUtc().

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

Devuelve una lista de todos los ID de zona horaria IANA disponibles en este sistema.

Este método sólo está disponible cuando la función timezone está activada.

Nota: el constructor QTimeZone también aceptará algunos ID de zona horaria UTC que no estén en la lista devuelta - no sería práctico listar todos los posibles ID de zona horaria UTC.

Véase también isTimeZoneIdAvailable().

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

Devuelve una lista de todos los ID de zona horaria de IANA disponibles para un territory dado.

Como caso especial, un territory de AnyTerritory selecciona aquellas zonas horarias que tienen una asociación no territorial, como UTC, mientras que World selecciona aquellas zonas horarias para las que existe un ID IANA global predeterminado. Si necesita una lista de todos los ID de zonas horarias de todos los territorios, utilice el método estándar availableTimeZoneIds().

Este método sólo está disponible cuando la función timezone está activada.

Véase también isTimeZoneIdAvailable() y territory().

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

Devuelve una lista de todos los ID de zonas horarias de IANA disponibles con un desfase horario estándar dado de offsetSeconds.

Cuando se admite el desplazamiento dado, QTimeZone(offsetSeconds).id() se incluye en la lista, aunque no sea un ID de IANA. Esto sólo ocurre cuando no hay ningún ID de zona horaria UTC de IANA con el desfase dado.

Este método sólo está disponible cuando la función timezone está activada.

Véase también isTimeZoneIdAvailable() y QTimeZone(int).

QString QTimeZone::comment() const

Devuelve cualquier comentario para la zona horaria.

La plataforma anfitriona puede proporcionar un comentario para ayudar a los usuarios a elegir la zona horaria correcta. Dependiendo de la plataforma, puede que no esté localizado.

Este método sólo está disponible cuando la función timezone está activada.

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

Devuelve el desfase horario de verano en la dirección atDateTime, es decir, el número de segundos que hay que añadir al desfase horario estándar para obtener el horario de verano local.

Por ejemplo, para la zona horaria "Europa/Berlín", el desfase horario de verano es de +3600 segundos. Durante el horario estándar daylightTimeOffset() devolverá 0, y cuando el horario de verano esté en vigor devolverá +3600.

Este método sólo está disponible cuando la función timezone está activada.

Véase también offsetFromUtc() y standardTimeOffset().

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

Devuelve el nombre de visualización de la zona horaria localizada.

El nombre devuelto es el correspondiente al locale dado , aplicable cuando el timeType dado está en vigor y de la forma indicada por nameType. Si los nombres de zona horaria han cambiado con el tiempo, se utilizarán los nombres actuales. Si no se dispone de un nombre localizado adecuado del tipo dado, puede utilizarse otro tipo de nombre o puede devolverse una cadena vacía.

Si no se indica locale, se utilizará la configuración regional por defecto de la aplicación. Para las zonas horarias personalizadas creadas por el código del cliente, se utilizarán los datos suministrados al constructor, ya que no habrá datos de localización disponibles para ella. Si esta zona horaria no es válida, se devuelve una cadena vacía. Esto también puede ocurrir para la representación de la hora local si falla la determinación de la zona horaria del sistema.

Este método sólo está disponible cuando la función timezone está activada.

Véase también abbreviation().

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

Devuelve el nombre de la zona horaria localizada.

El nombre devuelto es el correspondiente al locale dado , aplicable en el atDateTime dado , y de la forma indicada por nameType. El nombre mostrado puede cambiar en función del horario de verano o de acontecimientos históricos. Si no se dispone de un nombre convenientemente localizado del tipo dado, puede utilizarse otro tipo de nombre o puede devolverse una cadena vacía.

Si no se indica locale, se utilizará la configuración regional por defecto de la aplicación. Para las zonas horarias personalizadas creadas por el código del cliente, se utilizarán los datos suministrados al constructor, ya que no habrá datos de localización disponibles para ella. Si esta zona horaria no es válida, se devuelve una cadena vacía. Esto también puede ocurrir para la representación de la hora local si falla la determinación de la zona horaria del sistema.

Este método sólo está disponible cuando la función timezone está activada.

Véase también abbreviation().

[constexpr noexcept, since 6.5] int QTimeZone::fixedSecondsAheadOfUtc() const

Para una representación de tiempo ligera cuyo timeSpec() es Qt::OffsetFromUTC, esto devuelve el desplazamiento fijo desde UTC que describe. Para cualquier otra representación de tiempo devuelve 0, incluso si esa representación de tiempo tiene un desplazamiento constante desde UTC.

Esta función se introdujo en Qt 6.5.

[static] QTimeZone QTimeZone::fromCFTimeZone(CFTimeZoneRef timeZone)

Construye un nuevo QTimeZone que contiene una copia de la CFTimeZone timeZone.

Véase también toCFTimeZone().

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

Construye un nuevo QTimeZone que contiene una copia de la NSTimeZone timeZone.

Véase también toNSTimeZone().

[static, since 6.5] QTimeZone QTimeZone::fromSecondsAheadOfUtc(int offset)

[static, since 6.5] QTimeZone QTimeZone::fromDurationAheadOfUtc(std::chrono::seconds offset)

Devuelve una representación de la hora en un offset fijo , en segundos, por delante de UTC.

El offset de UTC debe estar en el rango -16 horas a +16 horas de lo contrario se devolverá una zona horaria no válida. El QTimeZone devuelto es una representación horaria ligera, no una zona horaria (respaldada por datos estándar o suministrados por el sistema).

Si el desplazamiento es 0, el timeSpec() de la instancia devuelta será Qt::UTC. En caso contrario, si offset es válido, timeSpec() será Qt::OffsetFromUTC. Una zona horaria no válida, cuando se devuelve, tiene Qt::TimeZone como su timeSpec().

Estas funciones se introdujeron en Qt 6.5.

Véase también QTimeZone(int), asBackendZone(), fixedSecondsAheadOfUtc(), MinUtcOffsetSecs, y MaxUtcOffsetSecs.

[static, since 6.4] QTimeZone QTimeZone::fromStdTimeZonePtr(const int *timeZone)

Devuelve un objeto QTimeZone que representa la misma zona horaria que timeZone. El ID de IANA de timeZone debe ser uno de los ID de sistema disponibles, de lo contrario se devolverá una zona horaria no válida.

Este método sólo está disponible cuando la función timezone está activada.

Esta función se introdujo en Qt 6.4.

[since 6.8] bool QTimeZone::hasAlternativeName(QByteArrayView alias) const

Devuelve true si alias es un nombre alternativo para esta zona horaria.

La base de datos IANA (antes Olson) ha cambiado el nombre de algunas zonas a lo largo de su historia. También hay algunas zonas que sólo se diferenciaban antes de 1970, pero que ahora se consideran sinónimas. Algunos backends pueden tener datos anteriores a 1970 y producir zonas distintas en este último caso. Otros pueden producir zonas indistinguibles excepto por id(). Este método determina si un ID se refiere (al menos desde 1970) a la misma zona que describe este objeto de zona horaria.

Este método sólo está disponible cuando la función timezone está activada.

Esta función se introdujo en Qt 6.8.

bool QTimeZone::hasDaylightTime() const

Devuelve true si la zona horaria ha practicado el horario de verano en algún momento.

Este método sólo está disponible cuando la función timezone está activada.

Véase también isDaylightTime() y daylightTimeOffset().

bool QTimeZone::hasTransitions() const

Devuelve true si el backend del sistema permite obtener transiciones.

Las transiciones son cambios en la zona horaria: se producen cuando se activa o desactiva el horario de verano y cuando las autoridades modifican los desfases de la zona horaria.

Este método sólo está disponible cuando la función timezone está activada.

Véase también nextTransition(), previousTransition() y transitions().

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

Devuelve el ID de Windows equivalente al ianaId dado.

Este método sólo está disponible cuando la función timezone está activada.

Véase también windowsIdToDefaultIanaId() y windowsIdToIanaIds().

QByteArray QTimeZone::id() const

Devuelve el ID de IANA para la zona horaria.

Los ID de IANA se utilizan en todas las plataformas. En Windows se traducen del ID de Windows al ID de IANA que mejor coincida con la zona horaria y el territorio.

Si esta instancia de zona horaria no se construyó a partir de un ID de IANA, su ID viene determinado por cómo se construyó. En la mayoría de los casos, se utiliza el ID que se pasó al construir la instancia. (El constructor de una zona personalizada utiliza el ID que se le pasa, que no debe ser un ID de IANA). Hay dos excepciones.

  • Las instancias construidas pasando sólo un desplazamiento UTC en segundos no tienen ID pasado al construir.
  • El constructor que sólo toma un ID de la IANA también aceptará algunos ID de desplazamiento UTC que de hecho no son ID de la IANA: su gestión de estos es equivalente a pasar el desplazamiento correspondiente en segundos, como para la primera excepción.

En los dos casos excepcionales, si existe una zona UTC-offset IANA con el desplazamiento especificado, la instancia construida utiliza el ID de esa zona IANA, aunque pueda diferir del ID UTC-offset (no IANA) pasado al constructor. En caso contrario, la instancia utiliza un ID sintetizado a partir de su desplazamiento, con la forma UTC±hh:mm:ss, omitiendo cualquier :00 final para los segundos o minutos cero. De nuevo, esto puede diferir del ID de desplazamiento UTC pasado al constructor.

Este método sólo está disponible cuando la función timezone está activada.

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

Devuelve true si el horario de verano estaba en vigor en la fecha atDateTime.

Este método sólo está disponible cuando la función timezone está activada.

Véase también hasDaylightTime() y daylightTimeOffset().

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

Devuelve true si una zona horaria dada ianaId está disponible en este sistema.

Esto puede incluir algunos ID no IANA, en particular los ID de desplazamiento UTC, que no aparecen en availableTimeZoneIds().

Este método sólo está disponible cuando la función timezone está activada.

Véase también availableTimeZoneIds().

[constexpr noexcept, since 6.5] bool QTimeZone::isUtcOrFixedOffset() const

Devuelve true si timeSpec() es Qt::UTC o Qt::OffsetFromUTC.

Cuando es verdadero, la descripción de la hora no cambia con el tiempo, como por ejemplo si hay cambios estacionales de horario de verano, como puede ocurrir con la hora local o una zona horaria. Saber esto puede ahorrar el código de llamada a la necesidad de varias otras comprobaciones.

Esta función se introdujo en Qt 6.5.

[static constexpr noexcept, since 6.5] bool QTimeZone::isUtcOrFixedOffset(Qt::TimeSpec spec)

Devuelve true si spec es Qt::UTC o Qt::OffsetFromUTC.

Esta función se introdujo en Qt 6.5.

bool QTimeZone::isValid() const

Devuelve true si esta zona horaria es válida.

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

Devuelve la primera Transición de zona horaria después de afterDateTime. Esto es muy útil cuando se tiene una hora de transición y se desea encontrar la transición después de ella.

Si no hay ninguna transición después de afterDateTime, se devolverá un OffsetData inválido con un QDateTime inválido como atUtc.

El afterDateTime dado es exclusivo.

Este método sólo está disponible cuando la función timezone está activada.

Véase también hasTransitions(), previousTransition(), y transitions().

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

Devuelve los detalles del desplazamiento efectivo en el forDateTime dado.

Esto es equivalente a llamar a abbreviation() y a las tres funciones de desplazamiento individualmente, pero puede ser más eficiente y puede obtener una localización diferente para la abreviatura. Si estos datos no están disponibles para la fecha y hora dadas, se devolverá un OffsetData inválido con un QDateTime inválido como su atUtc.

Este método sólo está disponible cuando la función timezone está activada.

Véase también offsetFromUtc(), standardTimeOffset(), daylightTimeOffset() y abbreviation().

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

Devuelve el desfase efectivo total en el atDateTime dado, es decir, el número de segundos que hay que añadir a UTC para obtener la hora local. Esto incluye cualquier desfase horario que pueda estar en vigor, es decir, es la suma de standardTimeOffset() y daylightTimeOffset() para la fecha y hora dadas.

Por ejemplo, para la zona horaria "Europa/Berlín", el desfase horario estándar es de +3600 segundos y el desfase DST es de +3600 segundos. Durante la hora estándar offsetFromUtc() devolverá +3600 (UTC+01:00), y durante DST devolverá +7200 (UTC+02:00).

Este método sólo está disponible cuando la función timezone está activada.

Véase también standardTimeOffset() y daylightTimeOffset().

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

Devuelve la primera Transición de zona horaria antes de beforeDateTime. Esto es muy útil cuando se tiene una hora de Transición y se desea encontrar la Transición anterior a ella.

Si no hay ninguna transición antes de beforeDateTime, se devolverá un OffsetData inválido con un QDateTime inválido como atUtc.

El beforeDateTime dado es exclusivo.

Este método sólo está disponible cuando la función timezone está activada.

Véase también hasTransitions(), nextTransition() y transitions().

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

Devuelve el desfase horario estándar en la dirección atDateTime, es decir, el número de segundos que hay que sumar a UTC para obtener la hora estándar local. Esto excluye cualquier desfase horario que pueda estar en vigor.

Por ejemplo, para la zona horaria "Europa/Berlín" el desfase horario estándar es de +3600 segundos. Tanto durante el horario estándar como durante el horario de verano offsetFromUtc() devolverá +3600 (UTC+01:00).

Este método sólo está disponible cuando la función timezone está activada.

Véase también offsetFromUtc() y daylightTimeOffset().

[noexcept] void QTimeZone::swap(QTimeZone &other)

Intercambia esta instancia de zona horaria con other. Esta operación es muy rápida y nunca falla.

[static] QTimeZone QTimeZone::systemTimeZone()

Devuelve un objeto QTimeZone que describe la hora local del sistema.

Este método sólo está disponible cuando la función timezone está activada. La instancia devuelta suele ser equivalente a la representación horaria ligera QTimeZone(QTimeZone::LocalTime), aunque implementada como zona horaria.

El objeto devuelto no cambiará para reflejar cualquier cambio posterior en la zona horaria del sistema. Representa la hora local que estaba en vigor cuando se llamó a asBackendZone(). En sistemas mal configurados, como aquellos que carecen de los datos de zona horaria en los que se basa el backend para el que se compiló Qt, puede no ser válido. En tal caso, se muestra una advertencia.

Véase también utc(), Initialization, asBackendZone(), y systemTimeZoneId().

[static] QByteArray QTimeZone::systemTimeZoneId()

Devuelve el ID IANA de la zona horaria actual del sistema.

Equivale a llamar a systemTimeZone().id(), pero puede omitir algunos cálculos para obtenerlo. La construcción de un QTimeZone a partir de la matriz de bytes devuelta producirá el mismo resultado que systemTimeZone().

Si el backend no puede determinar la zona correcta del sistema, el resultado estará vacío. En este caso, systemTimeZone().isValid() es falso y se emite una advertencia si se llama a este método o a systemTimeZone().

Si el backend es capaz de determinar la zona correcta del sistema pero no su nombre, se devuelve una matriz de bytes vacía. Por ejemplo, en Windows, el ID nativo del sistema se convierte a un ID IANA - si el ID del sistema no es conocido por el código de traducción interno, el resultado será vacío. En este caso, systemTimeZone().isValid() será verdadero.

Este método sólo está disponible cuando la función timezone está activada.

Nota: Antes de Qt 6.7, cuando no se podía determinar el resultado, se devolvía el resultado engañoso "UTC".

Véase también systemTimeZone().

[since 6.2] QLocale::Territory QTimeZone::territory() const

Devuelve el territorio de la zona horaria.

Un resultado de AnyTerritory significa que la zona no tiene asociación territorial conocida. En algunos casos, esto puede deberse a que la zona no tiene ningún territorio asociado -por ejemplo, UTC- o a que la zona se utiliza en varios territorios -por ejemplo, CET-. En otros casos, el backend QTimeZone puede no saber a qué territorio está asociada la zona - por ejemplo, porque no es la zona primaria del territorio en el que se utiliza.

Este método sólo está disponible cuando la función timezone está activada.

Esta función se introdujo en Qt 6.2.

[constexpr noexcept, since 6.5] Qt::TimeSpec QTimeZone::timeSpec() const

Devuelve un Qt::TimeSpec que identifica el tipo de representación horaria.

Si el resultado es Qt::TimeZone, esta descripción horaria es una zona horaria (respaldada por datos estándar o suministrados por el sistema); de lo contrario, es una representación horaria ligera. Si el resultado es Qt::LocalTime describe la hora local: véase Qt::TimeSpec para más detalles.

Esta función se introdujo en Qt 6.5.

Véase también fixedSecondsAheadOfUtc() y asBackendZone().

CFTimeZoneRef QTimeZone::toCFTimeZone() const

Crea una CFTimeZone a partir de QTimeZone.

La persona que llama posee el objeto CFTimeZone y es responsable de liberarlo.

Véase también fromCFTimeZone().

NSTimeZone *QTimeZone::toNSTimeZone() const

Crea una NSTimeZone a partir de QTimeZone.

El objeto NSTimeZone se libera automáticamente.

Véase también fromNSTimeZone().

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

Devuelve una lista de todas las transiciones de zona horaria entre las fechas y horas indicadas.

Las fechas fromDateTime y toDateTime son inclusivas. El miembro atUtc de cada entrada describe el momento de la transición, en el que surten efecto los desplazamientos y la abreviatura dados por otros miembros.

Este método sólo está disponible cuando la función timezone está activada.

Véase también hasTransitions(), nextTransition() y previousTransition().

[static] QTimeZone QTimeZone::utc()

Devuelve un objeto QTimeZone que describe UTC como zona horaria.

Este método sólo está disponible cuando la función timezone está activada. Es equivalente a pasar 0 a QTimeZone(int offsetSeconds) y a la representación temporal ligera QTimeZone(QTimeZone::UTC), aunque implementada como zona horaria, a diferencia de esta última.

Véase también systemTimeZone(), Initialization, y asBackendZone().

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

Devuelve el ID de IANA predeterminado para un windowsId dado.

Dado que un ID de Windows puede abarcar varios ID de IANA en varios territorios diferentes, esta función devuelve el ID de IANA utilizado con más frecuencia sin tener en cuenta el territorio, por lo que debe utilizarse con precaución. Normalmente es mejor solicitar el predeterminado para un territorio específico.

Este método sólo está disponible cuando la función timezone está activada.

Véase también ianaIdToWindowsId() y windowsIdToIanaIds().

[static] QByteArray QTimeZone::windowsIdToDefaultIanaId(const QByteArray &windowsId, QLocale::Territory territory)

Devuelve el ID de IANA predeterminado para un determinado windowsId y territory.

Dado que un ID de Windows puede abarcar varios ID de IANA dentro de un territorio determinado, se devuelve el ID de IANA utilizado con más frecuencia en ese territorio.

Como caso especial, AnyTerritory devuelve el valor predeterminado de aquellos ID de IANA que tienen una asociación no territorial, mientras que World devuelve el valor predeterminado para el windowsId dado en territorios que no tienen una asociación específica con él.

Si el valor devuelto está vacío, no hay ningún ID de la IANA específico para el territory dado para este windowsId. En este caso, es razonable volver a windowsIdToDefaultIanaId(windowsId).

Este método sólo está disponible cuando la función timezone está activada.

Véase también ianaIdToWindowsId(), windowsIdToIanaIds() y territory().

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

Devuelve todos los ID de la IANA para un determinado windowsId.

La lista devuelta se ordena alfabéticamente.

Este método sólo está disponible cuando la función timezone está activada.

Véase también ianaIdToWindowsId() y windowsIdToDefaultIanaId().

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

Devuelve todos los ID de la IANA para un windowsId y territory dados.

Como caso especial, AnyTerritory selecciona aquellos ID de IANA que tienen una asociación no territorial, mientras que World selecciona el predeterminado para el windowsId dado en territorios que no tienen una asociación específica con él.

La lista devuelta está en orden de frecuencia de uso, es decir, las zonas más grandes dentro de un territorio se enumeran en primer lugar.

Este método sólo está disponible cuando la función timezone está activada.

Véase también ianaIdToWindowsId(), windowsIdToDefaultIanaId() y territory().

[noexcept] QTimeZone &QTimeZone::operator=(QTimeZone &&other)

Mover-asigna other a esta instancia QTimeZone, transfiriendo la propiedad de sus datos a esta instancia.

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

Operador de asignación, asigna other a esto.

Documentación de variables miembro

const int QTimeZone::MaxUtcOffsetSecs

Se espera que el desfase horario con respecto a la UTC no sea mayor.

El desfase UTC más alto de cualquier zona horaria de principios del siglo XXI es de +14 horas (Isla de Navidad, Kiribati, Kiritimati), es decir, 14 horas al este de Greenwich.

Históricamente, antes de 1867, cuando Rusia vendió Alaska a Estados Unidos, Alaska utilizaba la misma fecha que Rusia, por lo que tenía desfases de más de 15 horas al este de Greenwich. Como Alaska utilizaba la hora media solar local, sus desfases variaban, pero todos eran inferiores a 16 horas al este de Greenwich.

Véase también MinUtcOffsetSecs.

const int QTimeZone::MinUtcOffsetSecs

Se espera que el desfase horario con respecto a UTC no sea inferior a este valor.

El desfase UTC más bajo de todas las zonas horarias de principios del siglo XXI es de -12 horas (Baker Island, EE.UU.), es decir, 12 horas al oeste de Greenwich.

Históricamente, hasta 1844, Filipinas (entonces controlada por España) utilizaba la misma fecha que las posesiones españolas en América, por lo que tenía desfases cercanos a las 16 horas al oeste de Greenwich. Como Filipinas utilizaba la hora media solar local, es posible que algunos de sus territorios periféricos funcionaran a más de 16 horas al oeste de Greenwich, pero ninguna zona horaria de principios del siglo XXI remonta su historia a tal extremo.

Véase también MaxUtcOffsetSecs.

Relacionados

[noexcept] bool operator!=(const QTimeZone &lhs, const QTimeZone &rhs)

Devuelve true si la zona horaria de lhs no es igual a la zona horaria de rhs.

Dos representaciones son diferentes si se describen internamente de forma distinta, aunque coincidan en su representación de todos los momentos del tiempo. En particular, una representación ligera del tiempo puede coincidir con una zona horaria, pero ambas no serán iguales.

[noexcept] bool operator==(const QTimeZone &lhs, const QTimeZone &rhs)

Devuelve true si la zona horaria de lhs es igual a la zona horaria de rhs.

Dos representaciones son diferentes si internamente se describen de forma distinta, aunque coincidan en su representación de todos los momentos del tiempo. En particular, una representación ligera del tiempo puede coincidir con una zona horaria, pero ambas no serán iguales.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.