En esta página

QDateTime Class

La clase QDateTime proporciona funciones de fecha y hora. Más...

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

Esta clase es débilmente comparable.

Nota: Todas las funciones de esta clase son reentrantes.

Tipos Públicos

(since 6.7) enum class TransitionResolution { Reject, RelativeToBefore, RelativeToAfter, PreferBefore, PreferAfter, …, PreferDaylightSaving }
enum class YearRange { First, Last }

Funciones Públicas

QDateTime(QDate date, QTime time, const QTimeZone &timeZone, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
QDateTime()
(since 6.5) QDateTime(QDate date, QTime time, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
QDateTime(const QDateTime &other)
QDateTime(QDateTime &&other)
~QDateTime()
QDateTime addDays(qint64 ndays) const
(since 6.4) QDateTime addDuration(std::chrono::milliseconds msecs) const
QDateTime addMSecs(qint64 msecs) const
QDateTime addMonths(int nmonths) const
QDateTime addSecs(qint64 s) const
QDateTime addYears(int nyears) const
QDate date() const
qint64 daysTo(const QDateTime &other) const
bool isDaylightTime() const
bool isNull() const
bool isValid() const
qint64 msecsTo(const QDateTime &other) const
int offsetFromUtc() const
qint64 secsTo(const QDateTime &other) const
void setDate(QDate date, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
void setMSecsSinceEpoch(qint64 msecs)
void setSecsSinceEpoch(qint64 secs)
void setTime(QTime time, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
void setTimeZone(const QTimeZone &toZone, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
void swap(QDateTime &other)
QTime time() const
(since 6.5) QTimeZone timeRepresentation() const
Qt::TimeSpec timeSpec() const
QTimeZone timeZone() const
QString timeZoneAbbreviation() const
CFDateRef toCFDate() const
QDateTime toLocalTime() const
qint64 toMSecsSinceEpoch() const
NSDate *toNSDate() const
QDateTime toOffsetFromUtc(int offsetSeconds) const
qint64 toSecsSinceEpoch() const
(since 6.4) std::chrono::sys_time<std::chrono::milliseconds> toStdSysMilliseconds() const
(since 6.4) std::chrono::sys_seconds toStdSysSeconds() const
QString toString(const QString &format, QCalendar cal) const
QString toString(QStringView format) const
QString toString(Qt::DateFormat format = Qt::TextDate) const
QString toString(const QString &format) const
QString toString(QStringView format, QCalendar cal) const
QDateTime toTimeZone(const QTimeZone &timeZone) const
QDateTime toUTC() const
(since 6.4) QDateTime &operator+=(std::chrono::milliseconds duration)
(since 6.4) QDateTime &operator-=(std::chrono::milliseconds duration)
QDateTime &operator=(const QDateTime &other)

Miembros Públicos Estáticos

(since 6.5) QDateTime currentDateTime(const QTimeZone &zone)
QDateTime currentDateTime()
QDateTime currentDateTimeUtc()
qint64 currentMSecsSinceEpoch()
qint64 currentSecsSinceEpoch()
QDateTime fromCFDate(CFDateRef date)
QDateTime fromMSecsSinceEpoch(qint64 msecs, const QTimeZone &timeZone)
QDateTime fromMSecsSinceEpoch(qint64 msecs)
QDateTime fromNSDate(const NSDate *date)
QDateTime fromSecsSinceEpoch(qint64 secs, const QTimeZone &timeZone)
QDateTime fromSecsSinceEpoch(qint64 secs)
(since 6.4) QDateTime fromStdLocalTime(const std::chrono::local_time<std::chrono::milliseconds> &time)
(since 6.4) QDateTime fromStdTimePoint(const std::chrono::time_point<Clock, Duration> &time)
(since 6.4) QDateTime fromStdTimePoint(const std::chrono::local_time<std::chrono::milliseconds> &time)
(since 6.4) QDateTime fromStdTimePoint(std::chrono::time_point<std::chrono::system_clock, std::chrono::milliseconds> time)
(since 6.4) QDateTime fromStdZonedTime(const int &time)
QDateTime fromString(const QString &string, const QString &format, int baseYear, QCalendar cal)
(since 6.0) QDateTime fromString(QStringView string, Qt::DateFormat format = Qt::TextDate)
QDateTime fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)
(since 6.0) QDateTime fromString(QStringView string, QStringView format, QCalendar cal)
(since 6.7) QDateTime fromString(QStringView string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
(since 6.0) QDateTime fromString(const QString &string, QStringView format, QCalendar cal)
(since 6.7) QDateTime fromString(const QString &string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
QDateTime fromString(const QString &string, const QString &format, QCalendar cal)
(since 6.7) QDateTime fromString(const QString &string, const QString &format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
(since 6.7) QDateTime fromString(QStringView string, QStringView format, int baseYear, QCalendar cal)
(since 6.0) QDateTime fromString(const QString &string, QStringView format, int baseYear, QCalendar cal)
bool operator!=(const QDateTime &lhs, const QDateTime &rhs)
(since 6.4) QDateTime operator+(const QDateTime &dateTime, std::chrono::milliseconds duration)
(since 6.4) QDateTime operator+(std::chrono::milliseconds duration, const QDateTime &dateTime)
(since 6.4) std::chrono::milliseconds operator-(const QDateTime &lhs, const QDateTime &rhs)
(since 6.4) QDateTime operator-(const QDateTime &dateTime, std::chrono::milliseconds duration)
bool operator<(const QDateTime &lhs, const QDateTime &rhs)
QDataStream &operator<<(QDataStream &out, const QDateTime &dateTime)
bool operator<=(const QDateTime &lhs, const QDateTime &rhs)
bool operator==(const QDateTime &lhs, const QDateTime &rhs)
bool operator>(const QDateTime &lhs, const QDateTime &rhs)
bool operator>=(const QDateTime &lhs, const QDateTime &rhs)
QDataStream &operator>>(QDataStream &in, QDateTime &dateTime)

Descripción Detallada

Un objeto QDateTime codifica una fecha de calendario y una hora de reloj (un "datetime") de acuerdo con una representación temporal. Combina características de las clases QDate y QTime. Puede leer la fecha y hora actuales del reloj del sistema. Proporciona funciones para comparar fechas y para manipular una fecha añadiendo un número de segundos, días, meses o años.

QDateTime puede describir las fechas con respecto a local time, a UTC, a un offset from UTC especificado o a un time zone especificado. Cada una de estas representaciones horarias puede encapsularse en una instancia adecuada de la clase QTimeZone. Por ejemplo, una zona horaria de "Europa/Berlín" aplicará las reglas de horario de verano utilizadas en Alemania. Por el contrario, un desfase fijo con respecto a UTC de +3600 segundos supone una hora de adelanto con respecto a UTC (normalmente escrito en notación estándar ISO como "UTC+01:00"), sin complicaciones de horario de verano. Cuando se utiliza la hora local o una zona horaria especificada, se tienen en cuenta las transiciones de zona horaria (véase below). timeSpec () de un QDateTime le indicará cuál de los cuatro tipos de representación de la hora está en uso; su timeRepresentation() proporciona una descripción completa de esa representación de la hora, como QTimeZone.

Un objeto QDateTime se crea normalmente dando una fecha y hora explícitamente en el constructor, o usando una función estática como currentDateTime() o fromMSecsSinceEpoch(). La fecha y la hora pueden modificarse con setDate() y setTime(). También se puede establecer una fecha-hora utilizando la función setMSecsSinceEpoch() que toma el tiempo, en milisegundos, desde el inicio, en UTC, del año 1970. La función fromString() devuelve un QDateTime, dada una cadena y un formato de fecha utilizado para interpretar la fecha dentro de la cadena.

QDateTime::currentDateTime() devuelve un QDateTime que expresa la fecha y hora actuales con respecto a una representación temporal específica, como la hora local (su valor por defecto). QDateTime::currentDateTimeUtc() devuelve un QDateTime que expresa la fecha y hora actuales con respecto a UTC; es equivalente a QDateTime::currentDateTime(QTimeZone::UTC).

Las funciones date() y time() proporcionan acceso a las partes de fecha y hora del datetime. La función toString() proporciona la misma información en formato textual.

QDateTime proporciona un conjunto completo de operadores para comparar dos objetos QDateTime, donde menor significa anterior y mayor significa posterior.

Puede incrementar (o disminuir) una fecha-hora en un número determinado de milisegundos utilizando addMSecs(), segundos utilizando addSecs(), o días utilizando addDays(). Del mismo modo, puede utilizar addMonths() y addYears(). La función daysTo() devuelve el número de días entre dos fechas, secsTo() devuelve el número de segundos entre dos fechas y msecsTo() devuelve el número de milisegundos entre dos fechas. Estas operaciones tienen en cuenta el horario de verano (DST) y otras transiciones de zona horaria, en su caso.

Utilice toTimeZone() para reexpresar una fecha-hora en términos de una representación horaria diferente. Pasando un QTimeZone ligero que represente la hora local, UTC o un desplazamiento fijo desde UTC, puede convertir la fecha-hora para utilizar la representación horaria correspondiente; o puede pasar una zona horaria completa (cuyo timeSpec() es Qt::TimeZone) para utilizarla en su lugar.

Observaciones

QDateTime no tiene en cuenta los segundos intercalares.

Todas las conversiones a y desde formatos de cadena se realizan utilizando la configuración regional de C. Para conversiones localizadas, véase QLocale.

No hay año 0 en el calendario gregoriano. Las fechas en ese año se consideran inválidas. El año -1 es el año "1 antes de Cristo" o "1 antes de la era común". El día anterior al 1 de enero 1 CE es el 31 de diciembre 1 AEC.

El uso de la hora local (la predeterminada) o de una zona horaria especificada implica la necesidad de resolver cualquier problema en torno a transitions. Como resultado, las operaciones sobre tales instancias de QDateTime (especialmente su construcción) pueden ser más costosas que las equivalentes cuando se utiliza UTC o un desplazamiento fijo respecto a ella.

Rango de fechas válidas

El rango de valores que QDateTime puede representar depende de la implementación del almacenamiento interno. QDateTime se almacena actualmente en un qint64 como un valor msecs en serie que codifica la fecha y la hora. Esto restringe el intervalo de fechas a unos ±292 millones de años, frente al intervalo de ±2.000 millones de años de QDate. Hay que tener cuidado al crear un QDateTime con valores extremos para no desbordar el almacenamiento. El rango exacto de valores admitidos varía en función de la representación temporal utilizada.

Uso de zonas horarias

QDateTime utiliza la información de la zona horaria del sistema para determinar la zona horaria local actual y su desfase respecto a UTC. Si el sistema no está configurado correctamente o no está actualizado, QDateTime dará resultados erróneos.

Asimismo, QDateTime utiliza la información proporcionada por el sistema para determinar el desfase de otras zonas horarias con respecto a UTC. Si esta información está incompleta o desactualizada, QDateTime dará resultados erróneos. Para más información, consulte la documentación de QTimeZone.

En sistemas Unix modernos, esto significa que QDateTime suele tener información precisa sobre transiciones históricas (incluyendo DST, ver más abajo) siempre que sea posible. En Windows, donde el sistema no soporta datos históricos de zonas horarias, la precisión histórica no se mantiene con respecto a las transiciones de zonas horarias, en particular incluyendo DST. Sin embargo, la compilación de Qt con la biblioteca ICU equipará QTimeZone con la misma base de datos de zonas horarias que se utiliza en Unix.

Transiciones horarias

QDateTime tiene en cuenta las transiciones de zona horaria, tanto las transiciones entre la hora estándar y el horario de verano (DST) y las transiciones que surgen cuando una zona cambia su desplazamiento estándar. Por ejemplo, si la transición se produce a las 2 de la madrugada y el reloj se adelanta a las 3 de la madrugada, entonces hay una hora "perdida" desde las 02:00:00 hasta las 02:59:59.999. Una transición de este tipo se conoce como "salto adelante" y las horas omitidas no tienen ningún significado. Cuando la transición es a la inversa, lo que se conoce como "retroceso", se repite un intervalo de tiempo, primero en la zona anterior (normalmente el horario de verano) y luego en la nueva zona (normalmente la hora estándar), por lo que las horas de este intervalo son ambiguas.

Algunas zonas utilizan el horario de verano a la inversa y el de verano a la inversa (con un desfase menor) en invierno. En estas zonas, el adelanto de la primavera sigue teniendo lugar en primavera y se salta una hora, pero es una transición fuera del horario de verano, mientras que el atraso sigue repitiendo una hora de otoño, pero es una transición al horario de verano.

Al convertir una hora UTC (o una hora con un desfase fijo respecto a UTC), siempre se obtiene un resultado válido sin ambigüedades en cualquier zona horaria. Sin embargo, al combinar una fecha y una hora para formar una fecha-hora, expresada con respecto a la hora local o a una zona horaria específica, el resultado nominal puede caer en una transición, lo que lo convierte en inválido o ambiguo. Los métodos en los que puede darse esta situación toman un parámetro resolve: éste siempre se ignora si el datetime solicitado es válido e inequívoco. Véase TransitionResolution para conocer las opciones que permite controlar. Antes de Qt 6.7, se seleccionaba el equivalente de su LegacyBehavior.

Para un intervalo omitido de spring forward, interpretar el tiempo solicitado con cualquiera de los dos desplazamientos da como resultado un tiempo real en el que el otro desplazamiento estaba en uso; así, pasar TransitionResolution::RelativeToBefore para resolve dará como resultado en realidad un tiempo después de la transición, que habría tenido la representación solicitada si la transición no se hubiera producido. Del mismo modo, TransitionResolution::RelativeToAfter para resolve resultados en un momento antes de la transición, que habría tenido la representación solicitada, si la transición se produjo antes.

Cuando QDateTime realiza operaciones aritméticas, como addDay() o addSecs(), tiene cuidado de producir un resultado válido. Por ejemplo, en un día en el que hay un salto adelante de las 02:00 a las 03:00, sumando un segundo a las 01:59:59 se obtendrán las 03:00:00. Si se suma un día a las 02:30 del día anterior se obtendrán las 03:30 del día de la transición, mientras que si se resta un día, llamando a addDay(-1), a las 02:30 del día siguiente se obtendrán las 01:30 del día de la transición. Mientras que addSecs() obtendrá un desfase horario del número de segundos dado, addDays() ajusta la fecha y sólo ajusta la hora si, de lo contrario, obtendría un resultado no válido. Si se aplica addDays(1) a las 03:00 del día anterior al cambio de primavera, se obtendrán simplemente las 03:00 del día de la transición, aunque éste sea sólo 23 horas después del primero; pero addSecs(24 * 60 * 60) obtendrá las 04:00 del día de la transición, ya que son 24 horas más tarde. Las transiciones típicas hacen que algunos días tengan 23 o 25 horas.

Para las fechas que el sistema time_t puede representar (de 1901-12-14 a 2038-01-18 en sistemas con time_t de 32 bits; para el rango completo que QDateTime puede representar si el tipo es de 64 bits), se utilizan las API estándar del sistema para determinar el desfase de la hora local respecto a UTC. Para las fechas no manejadas por estas APIs del sistema (incluyendo potencialmente algunas dentro del rango time_t ), se utiliza QTimeZone::systemTimeZone(), si está disponible, o se hace el mejor esfuerzo para estimar. En cualquier caso, la información de desfase utilizada depende del sistema y puede ser incompleta o, para fechas pasadas, históricamente inexacta. Además, para fechas futuras, los desfases de la zona horaria local y las reglas del horario de verano pueden cambiar antes de que llegue esa fecha.

Transiciones a días completos

Un pequeño número de zonas se han saltado o repetido días enteros como parte del traslado de la Línea Internacional de la Fecha. En estos casos, daysTo() no tendrá en cuenta la duplicación o el desfase, utilizando simplemente la diferencia en la fecha del calendario; por el contrario, msecsTo() y secsTo() conocen el verdadero intervalo de tiempo. Del mismo modo, addMSecs() y addSecs() corresponden directamente al tiempo transcurrido, mientras que addDays(), addMonths() y addYears() siguen el calendario nominal, salvo cuando el aterrizaje en una laguna o duplicación requiera resolver una ambigüedad o invalidez debida a una duplicación u omisión.

Nota: Los días "perdidos" durante un cambio de calendario, como de juliano a gregoriano, no afectan a QDateTime. Aunque los dos calendarios describen las fechas de forma diferente, los días sucesivos a través del cambio son descritos por instancias consecutivas de QDate, cada una un día más tarde que la anterior, según lo descrito por cualquiera de los dos calendarios o por sus valores toJulianDay(). Por el contrario, una zona que se salta o duplica un día está cambiando su descripción del tiempo, no de la fecha, ya que lo hace en 24 horas enteras.

Desplazamientos respecto a UTC

Los desfases respecto a UTC se miden en segundos al este de Greenwich. El momento descrito por una fecha y hora determinadas, como el mediodía de un día concreto, depende de la representación horaria utilizada. Las que tienen un desfase mayor respecto a UTC describen un momento anterior, y las que tienen un desfase menor un momento posterior, para cualquier combinación dada de fecha y hora.

No hay ninguna restricción explícita de tamaño en un desfase respecto a UTC, pero hay un límite implícito impuesto cuando se utilizan los métodos toString() y fromString() que utilizan un formato ±hh:mm, limitando efectivamente el rango a ± 99 horas y 59 minutos y sólo minutos enteros. Tenga en cuenta que actualmente ninguna zona horaria tiene un desfase fuera del rango de ±14 horas y todos los desfases conocidos son múltiplos de cinco minutos. Las zonas horarias históricas tienen un rango más amplio y pueden tener desfases que incluyan segundos; estos últimos no pueden representarse fielmente en cadenas.

Véase también QDate, QTime, QDateTimeEdit, y QTimeZone.

Documentación de tipos de miembros

[since 6.7] enum class QDateTime::TransitionResolution

Esta enumeración se utiliza para resolver combinaciones de datetime que caen en Timezone transitions.

Cuando se construye un datetime, especificado en términos de hora local o de una zona horaria que tiene horario de verano, o se revisa uno con setDate(), setTime() o setTimeZone(), los parámetros dados pueden implicar una representación de la hora que o bien no tiene significado o bien tiene dos significados en la zona. Tales representaciones del tiempo se describen como en la transición. En ambos casos, podemos simplemente devolver un datetime inválido, para indicar que la operación está mal definida. En el caso ambiguo, podemos seleccionar alternativamente una de las dos horas que podrían tener significado. Cuando no hay significado, podemos seleccionar un momento a cada lado que podría haber sido significado. Por ejemplo, al avanzar desde un momento anterior, podemos seleccionar el momento después de la transición que es realmente la cantidad de tiempo especificada después del momento anterior en cuestión. Las opciones especificadas aquí configuran cómo se realiza dicha selección.

ConstanteValorDescripción
QDateTime::TransitionResolution::Reject0Tratar cualquier tiempo de una transición como no válido. O lo es realmente, o es ambiguo.
QDateTime::TransitionResolution::RelativeToBefore1Selecciona un tiempo como si avanzara desde un tiempo anterior a la transición. Esto interpreta la hora solicitada utilizando el desfase en vigor antes de la transición y, si es necesario, convierte el resultado al desfase en vigor en la hora resultante.
QDateTime::TransitionResolution::RelativeToAfter2Seleccionar una hora como si se retrocediera desde una hora posterior a la transición. Esto interpreta la hora solicitada utilizando el desfase en vigor después de la transición y, si es necesario, convierte el resultado al desfase en vigor en la hora resultante.
QDateTime::TransitionResolution::PreferBefore3Selecciona un tiempo antes de la transición,
QDateTime::TransitionResolution::PreferAfter4Selecciona una hora después de la transición.
QDateTime::TransitionResolution::PreferStandard5Selecciona una hora en el lado de la hora estándar de la transición.
QDateTime::TransitionResolution::PreferDaylightSaving6Selecciona una hora en el lado del horario de verano de la transición.

Una constante adicional, LegacyBehavior, se utiliza como valor por defecto para los parámetros TransitionResolution en algunos constructores y funciones setter. Se trata de un alias de RelativeToBefore, que implementa el comportamiento más parecido al de QDateTime antes de Qt 6.7.

Para addDays(), addMonths() o addYears(), el comportamiento es y (mayoritariamente) era utilizar RelativeToBefore si se añadía un ajuste positivo y RelativeToAfter si se añadía un ajuste negativo.

Nota: En las zonas horarias donde el horario de verano aumenta el desfase respecto a UTC en verano (conocido como "DST positivo"), PreferStandard es un alias de RelativeToAfter y PreferDaylightSaving de RelativeToBefore. En las zonas horarias en las que el mecanismo de ahorro de luz diurna es una disminución del desfase con respecto a UTC en invierno (conocido como "DST negativo"), se aplica lo contrario, siempre que el sistema operativo informe -como lo hace en la mayoría de las plataformas- si una fecha y hora está en DST o en hora estándar. En algunas plataformas, en las que los detalles de la transición no están disponibles ni siquiera para Qt::TimeZone datetimes, QTimeZone se ve obligado a suponer que el lado con menor desfase respecto a UTC es la hora estándar, asumiendo de hecho DST positivo.

Las siguientes tablas ilustran cómo un constructor de QDateTime resuelve una solicitud para las 02:30 de un día en el que la hora local tiene una transición entre las 02:00 y las 03:00, con una hora estándar nominal LST y un horario de verano LDT en los dos lados, en los distintos casos posibles. El tipo de transición puede ser saltarse una hora o repetirla. El tipo de transición y el valor de un parámetro resolve determinan qué hora real de la fecha dada se selecciona. En primer lugar, el caso común de horario de verano positivo, donde:

Antes de02:00-03:00Después deresolveseleccionado
LSTomitirLDTRelativeToBefore03:30 LDT
LSTomitirLDTRelativeToAfter01:30 LST
LSTomitirLDTPreferirAntes01:30 LST
LSTomitirLDTPreferAfter03:30 LDT
LSTomitirLDTPreferStandard01:30 LST
LSTomitirLDTPreferDaylightSaving03:30 LDT
LDTrepetirLSTRelativeToBefore02:30 LDT
LDTrepetirLSTRelativeToAfter02:30 LST
LDTrepetirLSTPreferirAntes02:30 LDT
LDTrepetirLSTPreferAfter02:30 LST
LDTrepetirLSTPreferStandard02:30 LST
LDTrepitaLSTPreferDaylightSaving02:30 LDT

En segundo lugar, el caso de ahorro de luz diurna negativo, utilizando LDT en invierno y saltándose una hora para pasar a LST en verano, repitiendo después una hora en la transición de vuelta a invierno:

LDTsaltarLSTRelativeToBefore03:30 LST
LDTomitirLSTRelativeToAfter01:30 LDT
LDTomitirLSTPreferBefore01:30 LDT
LDTomitirLSTPreferAfter03:30 LST
LDTomitirLSTPreferStandard03:30 LST
LDTomitirLSTPreferir horario de verano01:30 LDT
LSTrepetirLDTRelativeToBefore02:30 LST
LSTrepitaLDTRelativeToAfter02:30 LDT
LSTrepetirLDTPreferirAntes02:30 LST
LSTrepitaLDTPreferAfter02:30 LDT
LSTrepetirLDTPreferStandard02:30 LST
LSTrepitaLDTPreferDaylightSaving02:30 LDT

Rechazar puede utilizarse para solicitar a las APIs relevantes de QDateTime que devuelvan un objeto datetime inválido para que su código pueda ocuparse de las transiciones por sí mismo, por ejemplo alertando a un usuario del hecho de que el datetime que ha seleccionado está en un intervalo de transición, para ofrecerle la oportunidad de resolver un conflicto o ambigüedad. El código que utilice esto puede encontrar útiles las otras opciones anteriores para determinar la información relevante a utilizar en su propia resolución (o la del usuario). Si el inicio o el final de la transición, o el momento de la propia transición, es la resolución correcta, se pueden utilizar las API de transición de QTimeZone para obtener esa información. Puede determinar si la transición es un intervalo repetido u omitido utilizando secsTo() para medir el tiempo real transcurrido entre el mediodía del día anterior y el del día siguiente. El resultado será inferior a 48 horas para un intervalo omitido (como un spring-forward) y superior a 48 horas para un intervalo repetido (como un fall-back).

Nota: Cuando se especifica una resolución distinta de Rechazar, se devuelve un objeto QDateTime válido, si es posible. Si la fecha-hora solicitada cae en un hueco, la fecha-hora devuelta no tendrá el time() solicitado - o, en algunos casos, el date(), si se ha saltado un día entero. Por tanto, puede detectar cuándo se produce un desfase comparando date() y time() con lo que se solicitó.

Relación con otros programas de datetime

Las API de datetime del lenguaje de programación Python tienen un parámetro fold que corresponde a RelativeToBefore (fold = True) y RelativeToAfter (fold = False).

La propuesta Temporal para reemplazar Date de JavaScript ofrece cuatro opciones para resolver una transición, como valor para un parámetro disambiguation. Su 'reject' lanza una excepción, que corresponde aproximadamente a Reject produciendo un resultado inválido. Sus opciones 'earlier' y 'later' corresponden a PreferBefore y PreferAfter. Su opción 'compatible' corresponde a RelativeToBefore (y a fold = True de Python).

Este enum se introdujo en Qt 6.7.

Véase también Timezone transitions.

enum class QDateTime::YearRange

Este tipo enumerado describe el rango de años (en el calendario gregoriano) representable por QDateTime:

ConstanteValorDescripción
QDateTime::YearRange::First-292275056Las últimas partes de este año son representables
QDateTime::YearRange::Last+292278994Las partes anteriores de este año son representables

Todas las fechas estrictamente entre estos dos años también son representables. Tenga en cuenta, sin embargo, que el Calendario Gregoriano no tiene año cero.

Nota: QDate puede describir fechas en un rango más amplio de años. Para la mayoría de los propósitos, esto hace poca diferencia, ya que el rango de años que QDateTime puede soportar llega a 292 millones de años a cada lado de 1970.

Véase también isValid() y QDate.

Documentación de las funciones miembro

QDateTime::QDateTime(QDate date, QTime time, const QTimeZone &timeZone, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)

Construye una fecha-hora con los datos date y time, utilizando la representación de la hora descrita en timeZone.

Si date es válido y time no lo es, la hora será la medianoche. Si timeZone no es válido, la fecha y hora no serán válidas. Si date y time describen un momento cercano a una transición para timeZone, resolve controla cómo se resuelve esa situación.

Nota: Antes de Qt 6.7, la versión de esta función carecía del parámetro resolve por lo que no tenía forma de resolver las ambigüedades relacionadas con las transiciones.

[noexcept] QDateTime::QDateTime()

Construye un datetime nulo, nominalmente utilizando la hora local.

Un datetime nulo no es válido, ya que su fecha y hora no son válidas.

Véase también isValid(), setMSecsSinceEpoch(), setDate(), setTime() y setTimeZone().

[since 6.5] QDateTime::QDateTime(QDate date, QTime time, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)

Construye una fecha-hora con los datos date y time, utilizando la hora local.

Si date es válido y time no, se utilizará la medianoche como hora. Si date y time describen un momento cercano a una transición para la hora local, resolve controla cómo se resuelve esa situación.

Nota: Antes de Qt 6.7, la versión de esta función carecía del parámetro resolve, por lo que no tenía forma de resolver las ambigüedades relacionadas con las transiciones.

Esta es una función sobrecargada.

Esta función se introdujo en Qt 6.5.

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

Construye una copia de other datetime.

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

Mueve el contenido de la fecha y hora temporal other a este objeto y deja other en un estado no especificado (pero adecuado).

[noexcept] QDateTime::~QDateTime()

Destruye el datetime.

QDateTime QDateTime::addDays(qint64 ndays) const

Devuelve un objeto QDateTime que contiene una fecha-hora ndays días posterior a la fecha-hora de este objeto (o anterior si ndays es negativo).

Si timeSpec() es Qt::LocalTime o Qt::TimeZone y la fecha y hora resultantes caen en la hora de transición del horario estándar al horario de verano, entonces el resultado estará justo más allá de este intervalo, en la dirección del cambio. Si la transición es a las 2h y el reloj se adelanta a las 3h, el resultado de apuntar entre las 2h y las 3h se ajustará para que caiga antes de las 2h (si ndays < 0) o después de las 3h (en caso contrario).

Véase también daysTo(), addMonths(), addYears(), addSecs(), y Timezone transitions.

[since 6.4] QDateTime QDateTime::addDuration(std::chrono::milliseconds msecs) const

Devuelve un objeto QDateTime que contiene un datetime msecs milisegundos posterior al datetime de este objeto (o anterior si msecs es negativo).

Si este datetime no es válido, se devolverá un datetime inválido.

Nota: La suma de duraciones expresadas en std::chrono::months o std::chrono::years no produce el mismo resultado obtenido utilizando addMonths() o addYears(). Las primeras son duraciones fijas, calculadas en relación con el año solar; las segundas utilizan las definiciones de meses/años del calendario gregoriano.

Esta función se introdujo en Qt 6.4.

Véase también addMSecs(), msecsTo(), addDays(), addMonths() y addYears().

QDateTime QDateTime::addMSecs(qint64 msecs) const

Devuelve un objeto QDateTime que contiene un datetime msecs milisegundos posterior al datetime de este objeto (o anterior si msecs es negativo).

Si este datetime es inválido, se devolverá un datetime inválido.

Véase también addSecs(), msecsTo(), addDays(), addMonths() y addYears().

QDateTime QDateTime::addMonths(int nmonths) const

Devuelve un objeto QDateTime que contiene una fecha-hora nmonths meses posterior a la fecha-hora de este objeto (o anterior si nmonths es negativo).

Si timeSpec() es Qt::LocalTime o Qt::TimeZone y la fecha y hora resultantes caen en la hora de transición del horario estándar al horario de verano, el resultado estará justo más allá de este intervalo, en la dirección del cambio. Si la transición es a las 2h y el reloj se adelanta a las 3h, el resultado de apuntar entre las 2h y las 3h se ajustará para que caiga antes de las 2h (si nmonths < 0) o después de las 3h (en caso contrario).

Véase también daysTo(), addDays(), addYears(), addSecs(), y Timezone transitions.

QDateTime QDateTime::addSecs(qint64 s) const

Devuelve un objeto QDateTime que contiene un datetime s segundos más tarde que el datetime de este objeto (o antes si s es negativo).

Si este datetime es inválido, se devolverá un datetime inválido.

Véase también addMSecs(), secsTo(), addDays(), addMonths() y addYears().

QDateTime QDateTime::addYears(int nyears) const

Devuelve un objeto QDateTime que contiene una fecha-hora nyears años posterior a la fecha-hora de este objeto (o anterior si nyears es negativo).

Si timeSpec() es Qt::LocalTime o Qt::TimeZone y la fecha y hora resultantes caen en la hora de transición del horario estándar al horario de verano, el resultado estará justo más allá de este intervalo, en la dirección del cambio. Si la transición es a las 2h y el reloj se adelanta a las 3h, el resultado de apuntar entre las 2h y las 3h se ajustará para que caiga antes de las 2h (si nyears < 0) o después de las 3h (en caso contrario).

Véase también daysTo(), addDays(), addMonths(), addSecs(), y Timezone transitions.

[static, since 6.5] QDateTime QDateTime::currentDateTime(const QTimeZone &zone)

Devuelve la fecha y hora actuales del reloj del sistema, utilizando la representación de la hora descrita en zone. Si se omite zone, se utiliza la hora local.

Esta función se introdujo en Qt 6.5.

Véase también currentDateTimeUtc(), QDate::currentDate(), QTime::currentTime() y toTimeZone().

[static] QDateTime QDateTime::currentDateTime()

Esta función sobrecarga QDateTime::currentDateTime().

[static] QDateTime QDateTime::currentDateTimeUtc()

Devuelve la fecha/hora actual del reloj del sistema, expresada en términos de UTC.

Equivale a currentDateTime(QTimeZone::UTC).

Véase también currentDateTime(), QDate::currentDate(), QTime::currentTime() y toTimeZone().

[static noexcept] qint64 QDateTime::currentMSecsSinceEpoch()

Devuelve el número actual de milisegundos desde el inicio, en UTC, del año 1970.

Este número es como la variable POSIX time_t, pero expresado en milisegundos en lugar de segundos.

Véase también currentDateTime(), currentDateTimeUtc(), y toTimeZone().

[static noexcept] qint64 QDateTime::currentSecsSinceEpoch()

Devuelve el número de segundos transcurridos desde el inicio, en UTC, del año 1970.

Este número es como la variable POSIX time_t.

Véase también currentMSecsSinceEpoch().

QDate QDateTime::date() const

Devuelve la parte de fecha del datetime.

Véase también setDate(), time() y timeRepresentation().

qint64 QDateTime::daysTo(const QDateTime &other) const

Devuelve el número de días transcurridos desde esta fecha y hora hasta la fecha y hora de other. El número de días se cuenta como el número de veces que se alcanza la medianoche entre esta fecha y la fecha y hora de other. Esto significa que una diferencia de 10 minutos entre las 23:55 y las 0:05 del día siguiente cuenta como un día.

Si la fecha y hora de other es anterior a esta fecha y hora, el valor devuelto es negativo.

Ejemplo:

QDateTime fechaInicio(QDate(2012, 7, 6), QTime(8, 30, 0));QDateTime fechafinal(QDate(2012, 7, 7), QTime(16, 30, 0));qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate);

fechaInicio = QDateTime(QDate(2012, 7, 6), QTime(23, 55, 0)); endDate = QDateTime(QDate(2012, 7, 7), QTime(0, 5, 0));qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate);

qSwap(startDate, endDate); // Make endDate before startDate.
qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate);

Véase también addDays(), secsTo() y msecsTo().

[static] QDateTime QDateTime::fromCFDate(CFDateRef date)

Construye un nuevo QDateTime que contiene una copia del CFDate date.

Véase también toCFDate().

[static] QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs, const QTimeZone &timeZone)

Devuelve un datetime que representa un momento el número dado msecs de milisegundos después del inicio, en UTC, del año 1970, descrito como se especifica en timeZone. La representación horaria por defecto es la hora local.

Tenga en cuenta que existen valores posibles para msecs que se encuentran fuera del rango válido de QDateTime, tanto negativos como positivos. El comportamiento de esta función es indefinido para esos valores.

Véase también fromSecsSinceEpoch(), toMSecsSinceEpoch(), y setMSecsSinceEpoch().

[static] QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs)

Esta función sobrecarga QDateTime::fromMSecsSinceEpoch().

[static] QDateTime QDateTime::fromNSDate(const NSDate *date)

Construye un nuevo QDateTime que contiene una copia del NSDate date.

Véase también toNSDate().

[static] QDateTime QDateTime::fromSecsSinceEpoch(qint64 secs, const QTimeZone &timeZone)

Devuelve un datetime que representa un momento el número dado secs de segundos después del inicio, en UTC, del año 1970, descrito como se especifica en timeZone. La representación horaria por defecto es la hora local.

Tenga en cuenta que hay valores posibles para secs que se encuentran fuera del rango válido de QDateTime, tanto negativos como positivos. El comportamiento de esta función es indefinido para esos valores.

Véase también fromMSecsSinceEpoch(), toSecsSinceEpoch(), y setSecsSinceEpoch().

[static] QDateTime QDateTime::fromSecsSinceEpoch(qint64 secs)

Esta función sobrecarga QDateTime::fromSecsSinceEpoch().

[static, since 6.4] QDateTime QDateTime::fromStdLocalTime(const std::chrono::local_time<std::chrono::milliseconds> &time)

Construye un datetime cuya fecha y hora son el número de milisegundos representados por time, contados desde 1970-01-01T00:00:00.000 en hora local (Qt::LocalTime).

Nota: Esta función requiere C++20.

Esta función se introdujo en Qt 6.4.

Véase también toStdSysMilliseconds() y fromMSecsSinceEpoch().

[static, since 6.4] template <typename Clock, typename Duration> QDateTime QDateTime::fromStdTimePoint(const std::chrono::time_point<Clock, Duration> &time)

Construye un datetime que representa el mismo punto en el tiempo que time, usando Qt::UTC como su representación de tiempo.

El reloj de time debe ser compatible con std::chrono::system_clock; en particular, debe existir una conversión soportada por std::chrono::clock_cast. Tras la conversión, el tipo de duración del resultado debe ser convertible a std::chrono::milliseconds.

Si este no es el caso, el invocador debe realizar la conversión de reloj necesaria hacia std::chrono::system_clock y la conversión necesaria del tipo de duración (cast/round/floor/ceil/...) para que la entrada a esta función satisfaga las restricciones anteriores.

Nota: Esta función requiere C++20.

Esta función se introdujo en Qt 6.4.

Véase también toStdSysMilliseconds() y fromMSecsSinceEpoch().

[static, since 6.4] QDateTime QDateTime::fromStdTimePoint(const std::chrono::local_time<std::chrono::milliseconds> &time)

Construye un datetime cuya fecha y hora son el número de milisegundos representados por time, contados desde 1970-01-01T00:00:00.000 en hora local (Qt::LocalTime).

Nota: Esta función requiere C++20.

Esta función se introdujo en Qt 6.4.

Véase también toStdSysMilliseconds() y fromMSecsSinceEpoch().

[static, since 6.4] QDateTime QDateTime::fromStdTimePoint(std::chrono::time_point<std::chrono::system_clock, std::chrono::milliseconds> time)

Construye una fecha-hora que representa el mismo punto en el tiempo que time, utilizando Qt::UTC como su representación temporal.

Esta función sobrecarga QDateTime::fromStdTimePoint().

Esta función se introdujo en Qt 6.4.

[static, since 6.4] QDateTime QDateTime::fromStdZonedTime(const int &time)

Construye una fecha-hora que representa el mismo momento que time. El resultado se expresará en la zona horaria de time.

Nota: Esta función requiere C++20.

Esta función se introdujo en Qt 6.4.

Véase también QTimeZone, toStdSysMilliseconds(), y fromMSecsSinceEpoch().

[static] QDateTime QDateTime::fromString(const QString &string, const QString &format, int baseYear, QCalendar cal)

Devuelve el QDateTime representado por el string, usando el format dado, o un datetime inválido si la cadena no puede ser analizada.

Utiliza el calendario cal si se proporciona, en caso contrario el gregoriano.

Cuando format sólo especifica los dos últimos dígitos de un año, los 100 años que comienzan en baseYear son los candidatos considerados en primer lugar. Antes de la versión 6.7 no existía el parámetro baseYear y siempre se utilizaba 1900. Este es el valor por defecto para baseYear, seleccionando un año desde entonces hasta 1999. En algunos casos, otros campos pueden hacer que se seleccione el siglo siguiente o el anterior, para obtener un resultado coherente con todos los campos dados. Véase QDate::fromString() para más detalles.

Además de las expresiones, reconocidas en la cadena de formato para representar partes de la fecha y la hora, por QDate::fromString() y QTime::fromString(), este método admite:

ExpresiónSalida
tla zona horaria (desplazamiento, nombre, "Z" o desplazamiento con prefijo "UTC")
ttla zona horaria en formato offset sin dos puntos entre horas y minutos (por ejemplo "+0200")
tttla zona horaria en formato offset con dos puntos entre horas y minutos (por ejemplo "+02:00")
ttttel nombre de la zona horaria, ya sea el que QTimeZone::displayName() indica para QTimeZone::LongName o el ID IANA de la zona (por ejemplo, "Europe/Berlin"). Los nombres reconocidos son los conocidos por QTimeZone, que pueden depender del sistema operativo en uso.

Si no está presente el especificador de formato 't', se utiliza la zona horaria local del sistema. Para conocer los valores por defecto de todos los demás campos, consulte QDate::fromString() y QTime::fromString().

Por ejemplo:

QDateTime dateTime = QDateTime::fromString("1.30.1", "M.d.s");
// dateTime is January 30 in 1900 at 00:00:01.
dateTime = QDateTime::fromString("12", "yy");
// dateTime is January 1 in 1912 at 00:00:00.

Todos los demás caracteres de entrada se tratarán como texto. Cualquier secuencia no vacía de caracteres entre comillas simples también se tratará (sin las comillas) como texto y no se interpretará como una expresión.

QTime time1 = QTime::fromString("131", "HHh");
// time1 is 13:00:00
QTime time2 = QTime::fromString("1apA", "1amAM");
// time2 is 01:00:00

QDateTime dateTime2 = QDateTime::fromString("M1d1y9800:01:02",
                                            "'M'M'd'd'y'yyhh:mm:ss");
// dateTime is 1 January 1998 00:01:02

Si no se cumple el formato, se devuelve un QDateTime no válido. Si se cumple el formato, pero string representa una fecha y hora no válidas (por ejemplo, en un espacio omitido por una transición de zona horaria), se devuelve un QDateTime válido, que representa una fecha y hora cercanas que sí son válidas.

Las expresiones que no tienen ceros a la izquierda (d, M, h, m, s, z) serán codiciosas. Esto significa que utilizarán dos dígitos (o tres, en el caso de z) aunque esto las sitúe fuera del rango y/o deje muy pocos dígitos para otras secciones.

QDateTime dateTime = QDateTime::fromString("130", "Mm"); // invalid

Esto podría haber significado 1 Enero 00:30.00 pero la M cogerá dos dígitos.

Los campos incorrectamente especificados de string harán que se devuelva un QDateTime inválido. Sólo se admiten las fechas comprendidas entre la hora local del inicio del año 100 y el final del año 9999. Tenga en cuenta que las fechas cercanas a los extremos de este intervalo en otras zonas horarias, incluida UTC, pueden quedar fuera del intervalo (y, por tanto, considerarse no válidas) en función de la zona horaria local.

Nota: Los nombres del día y del mes, así como los indicadores AM/PM deben indicarse en inglés (configuración regional C). Si deben reconocerse nombres de mes y día localizados o formas localizadas de AM/PM, utilice QLocale::system().toDateTime().

Nota: Si un carácter de formato se repite más veces que la expresión más larga de la tabla anterior que lo utiliza, esta parte del formato se leerá como varias expresiones sin separador entre ellas; la más larga de arriba, posiblemente repetida tantas veces como copias haya de ella, terminando con un residuo que puede ser una expresión más corta. Así, 'tttttt' coincidiría con "Europe/BerlinEurope/Berlin" y establecería la zona a la hora de Berlín; si la cadena datetime contuviera "Europe/BerlinZ" "coincidiría" pero produciría un resultado inconsistente, dando lugar a un datetime inválido.

Véase también toString(), QDate::fromString(), QTime::fromString() y QLocale::toDateTime().

[static, since 6.0] QDateTime QDateTime::fromString(QStringView string, Qt::DateFormat format = Qt::TextDate)

Esta función sobrecarga QDateTime::fromString().

Esta función se introdujo en Qt 6.0.

[static] QDateTime QDateTime::fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)

Devuelve el QDateTime representado por el string, utilizando el format dado, o un datetime inválido si esto no es posible.

Nota para Qt::TextDate: sólo se reconocen los nombres de mes cortos en inglés (por ejemplo, "Jan" en forma corta o "January" en forma larga).

Se trata de una función sobrecargada.

Véase también toString() y QLocale::toDateTime().

[static, since 6.0] QDateTime QDateTime::fromString(QStringView string, QStringView format, QCalendar cal)

Esta función sobrecarga QDateTime::fromString().

Esta función se introdujo en Qt 6.0.

[static, since 6.7] QDateTime QDateTime::fromString(QStringView string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)

Utiliza un QCalendar construido por defecto.

Esta función sobrecarga QDateTime::fromString().

Esta función se introdujo en Qt 6.7.

[static, since 6.0] QDateTime QDateTime::fromString(const QString &string, QStringView format, QCalendar cal)

Esta función sobrecarga QDateTime::fromString().

Esta función se introdujo en Qt 6.0.

[static, since 6.7] QDateTime QDateTime::fromString(const QString &string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)

Utiliza un QCalendar construido por defecto.

Esta función sobrecarga QDateTime::fromString().

Esta función se introdujo en Qt 6.7.

[static] QDateTime QDateTime::fromString(const QString &string, const QString &format, QCalendar cal)

Esta función sobrecarga QDateTime::fromString().

[static, since 6.7] QDateTime QDateTime::fromString(const QString &string, const QString &format, int baseYear = QLocale::DefaultTwoDigitBaseYear)

Utiliza un QCalendar construido por defecto.

Esta función sobrecarga QDateTime::fromString().

Esta función se introdujo en Qt 6.7.

[static, since 6.7] QDateTime QDateTime::fromString(QStringView string, QStringView format, int baseYear, QCalendar cal)

Esta función sobrecarga QDateTime::fromString().

Esta función se introdujo en Qt 6.7.

[static, since 6.0] QDateTime QDateTime::fromString(const QString &string, QStringView format, int baseYear, QCalendar cal)

Esta función sobrecarga QDateTime::fromString().

Esta función se introdujo en Qt 6.0.

bool QDateTime::isDaylightTime() const

Devuelve si esta fecha cae en horario de verano.

Si el Qt::TimeSpec no es Qt::LocalTime o Qt::TimeZone entonces siempre devolverá false.

Véase también timeSpec().

bool QDateTime::isNull() const

Devuelve true si tanto la fecha como la hora son nulas; en caso contrario, devuelve false. Una fecha/hora nula no es válida.

Véase también QDate::isNull(), QTime::isNull() y isValid().

bool QDateTime::isValid() const

Devuelve true si este datetime representa un momento definido, en caso contrario false.

Un datetime es válido si tanto su fecha como su hora son válidas y la representación horaria utilizada da un significado válido a su combinación. Cuando la representación horaria es una zona horaria específica o la hora local, puede haber momentos en algunas fechas que la zona se salte en su representación, como cuando una transición de horario de verano se salta una hora (normalmente durante una noche en primavera). Por ejemplo, si el horario de verano finaliza a las 2 de la madrugada y el reloj avanza hasta las 3 de la madrugada, las horas de ese día comprendidas entre las 02:00:00 y las 02:59:59.999 no serán válidas.

Véase también QDateTime::YearRange, QDate::isValid(), y QTime::isValid().

qint64 QDateTime::msecsTo(const QDateTime &other) const

Devuelve el número de milisegundos transcurridos desde esta fecha y hora hasta la fecha y hora de other. Si la fecha y hora de other es anterior a esta fecha y hora, el valor devuelto es negativo.

Antes de realizar la comparación, las dos fechas se convierten a Qt::UTC para garantizar que el resultado es correcto si el horario de verano (DST) se aplica a una de las dos fechas y no a la otra.

Devuelve 0 si alguna de las dos fechas no es válida.

Véase también addMSecs(), daysTo() y QTime::msecsTo().

int QDateTime::offsetFromUtc() const

Devuelve el desfase de esta fecha respecto a UTC en segundos.

El resultado depende de timeSpec():

  • Qt::UTC El offset es 0.
  • Qt::OffsetFromUTC El offset es el valor establecido originalmente.
  • Qt::LocalTime Se devuelve el desfase de la hora local con respecto a UTC.
  • Qt::TimeZone Se devuelve el desfase utilizado por la zona horaria.

Para los dos últimos, se devuelve el desfase en esta fecha y hora, teniendo en cuenta el desfase por horario de verano. El desfase es la diferencia entre la hora local o la hora en la zona horaria dada y la hora UTC; es positivo en las zonas horarias por delante de UTC (al Este del Primer Meridiano), negativo para las que están por detrás de UTC (al Oeste del Primer Meridiano).

Véase también setTimeZone().

qint64 QDateTime::secsTo(const QDateTime &other) const

Devuelve el número de segundos transcurridos desde esta fecha y hora hasta la fecha y hora de other. Si la fecha y hora de other es anterior a esta fecha y hora, el valor devuelto es negativo.

Antes de realizar la comparación, las dos fechas se convierten a Qt::UTC para garantizar que el resultado es correcto si el horario de verano (DST) se aplica a una de las dos fechas pero no a la otra.

Devuelve 0 si alguna de las dos fechas no es válida.

Ejemplo:

QDateTime now = QDateTime::fecha-hora actual();QDateTime xmas(QDate(now.date().year(), 12, 25).startOfDay());qDebug("There are %d seconds to Christmas", now.secsTo(xmas));

Véase también addSecs(), daysTo() y QTime::secsTo().

void QDateTime::setDate(QDate date, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)

Establece la parte de fecha de esta fecha y hora en date.

Si aún no se ha establecido la hora, se establece a medianoche. Si date es inválido, este QDateTime se convierte en inválido.

Si date y time() describen un momento cercano a una transición para la representación temporal de este datetime, resolve controla cómo se resuelve esa situación.

Nota: Antes de Qt 6.7, la versión de esta función carecía del parámetro resolve, por lo que no tenía forma de resolver las ambigüedades relacionadas con las transiciones.

Véase también date(), setTime(), y setTimeZone().

void QDateTime::setMSecsSinceEpoch(qint64 msecs)

Establece la fecha-hora para representar un momento un número dado, msecs, de milisegundos después del inicio, en UTC, del año 1970.

En sistemas que no soportan zonas horarias, esta función se comportará como si la hora local fuera Qt::UTC.

Tenga en cuenta que si pasa el mínimo de qint64 (std::numeric_limits<qint64>::min()) a msecs se producirá un comportamiento indefinido.

Véase también setSecsSinceEpoch(), toMSecsSinceEpoch(), y fromMSecsSinceEpoch().

void QDateTime::setSecsSinceEpoch(qint64 secs)

Establece la fecha-hora para representar un momento un número dado, secs, de segundos después del inicio, en UTC, del año 1970.

En sistemas que no soportan zonas horarias, esta función se comportará como si la hora local fuera Qt::UTC.

Véase también setMSecsSinceEpoch(), toSecsSinceEpoch(), y fromSecsSinceEpoch().

void QDateTime::setTime(QTime time, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)

Establece la parte de la hora de esta fecha y hora en time. Si time no es válida, esta función la establece en medianoche. Por lo tanto, es posible borrar cualquier hora establecida en QDateTime estableciéndola por defecto en QTime:

QDateTime dt = QDateTime::currentDateTime();
dt.setTime(QTime());

Si date() y time describen un momento cercano a una transición para la representación temporal de esta fecha-hora, resolve controla cómo se resuelve esa situación.

Nota: Antes de Qt 6.7, la versión de esta función carecía del parámetro resolve, por lo que no tenía forma de resolver las ambigüedades relacionadas con las transiciones.

Véase también time(), setDate(), y setTimeZone().

void QDateTime::setTimeZone(const QTimeZone &toZone, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)

Establece la zona horaria utilizada en esta fecha y hora en toZone.

El datetime puede referirse a un punto diferente en el tiempo. Utiliza la representación horaria de toZone, lo que puede cambiar el significado de sus invariables date() y time().

Si toZone no es válido, la fecha y hora tampoco lo será. De lo contrario, timeSpec() de este datetime después de la llamada coincidirá con toZone.timeSpec().

Si date() y time() describen un momento cercano a una transición para toZone, resolve controla cómo se resuelve esa situación.

Nota: Antes de Qt 6.7, la versión de esta función carecía del parámetro resolve por lo que no tenía forma de resolver las ambigüedades relacionadas con las transiciones.

Véase también timeRepresentation(), timeZone(), y Qt::TimeSpec.

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

Intercambia esta fecha y hora con other. Esta operación es muy rápida y nunca falla.

QTime QDateTime::time() const

Devuelve la parte de la hora del datetime.

Véase también setTime(), date() y timeRepresentation().

[since 6.5] QTimeZone QDateTime::timeRepresentation() const

Devuelve un QTimeZone que identifica cómo este datetime representa el tiempo.

El timeSpec() del QTimeZone devuelto coincidirá con el de este datetime; si no es Qt::TimeZone entonces el QTimeZone devuelto es una representación del tiempo. Cuando su timeSpec() es Qt::OffsetFromUTC, el QTimeZone's fixedSecondsAheadOfUtc() devuelto proporciona el desplazamiento. Cuando timeSpec() es Qt::TimeZone, el propio objeto QTimeZone es la representación completa de esa zona horaria.

Esta función se introdujo en Qt 6.5.

Véase también timeZone(), setTimeZone() y QTimeZone::asBackendZone().

Qt::TimeSpec QDateTime::timeSpec() const

Devuelve la especificación horaria del datetime.

Clasifica su representación horaria como hora local, UTC, un desfase fijo respecto a UTC (sin indicar el desfase) o una zona horaria (sin dar los detalles de esa zona horaria). Equivale a timeRepresentation().timeSpec().

Véase también setTimeZone(), timeRepresentation(), date() y time().

QTimeZone QDateTime::timeZone() const

Devuelve la zona horaria de la fecha-hora.

El resultado es el mismo que timeRepresentation().asBackendZone(). En todos los casos, timeSpec() del resultado es Qt::TimeZone.

Cuando timeSpec() es Qt::LocalTime, el resultado describirá la hora local en el momento en que se llamó a este método. No reflejará cambios posteriores en la zona horaria del sistema, aunque el QDateTime del que se obtuvo sí lo haga.

Véase también timeRepresentation(), setTimeZone(), Qt::TimeSpec, y QTimeZone::asBackendZone().

QString QDateTime::timeZoneAbbreviation() const

Devuelve la abreviatura de la zona horaria para esta fecha y hora.

La cadena devuelta depende de timeSpec():

Nota: No se garantiza que la abreviatura sea única, es decir, diferentes zonas horarias pueden tener la misma abreviatura. Para Qt::LocalTime y Qt::TimeZone, cuando es devuelta por el sistema anfitrión, la abreviatura puede estar localizada.

Véase también timeSpec() y QTimeZone::abbreviation().

CFDateRef QDateTime::toCFDate() const

Crea un CFDate a partir de QDateTime.

El que llama es dueño del objeto CFDate y es responsable de liberarlo.

Véase también fromCFDate().

QDateTime QDateTime::toLocalTime() const

Devuelve una copia de esta fecha y hora convertida a hora local.

El resultado representa el mismo momento en el tiempo y es igual a esta fecha y hora.

Ejemplo:

QDateTime UTC(QDateTime::currentDateTimeUtc());QDateTime local(UTC.toLocalTime());qDebug() << "UTC time is:" << UTC;
qDebug() << "Local time is:" << local;
qDebug() << "No difference between times:" << UTC.secsTo(local);

Véase también toTimeZone(), toUTC() y toOffsetFromUtc().

qint64 QDateTime::toMSecsSinceEpoch() const

Devuelve la fecha-hora como un número de milisegundos después del inicio, en UTC, del año 1970.

En sistemas que no soportan zonas horarias, esta función se comportará como si la hora local fuera Qt::UTC.

El comportamiento de esta función es indefinido si la fecha y hora almacenada en este objeto no es válida. Sin embargo, para todas las fechas válidas, esta función devuelve un valor único.

Véase también toSecsSinceEpoch(), setMSecsSinceEpoch() y fromMSecsSinceEpoch().

NSDate *QDateTime::toNSDate() const

Crea una NSDate a partir de QDateTime.

El objeto NSDate se libera automáticamente.

Véase también fromNSDate().

QDateTime QDateTime::toOffsetFromUtc(int offsetSeconds) const

Devuelve una copia de esta fecha y hora convertida a una especificación de Qt::OffsetFromUTC con el valor offsetSeconds. Equivalente a toTimeZone(QTimeZone::fromSecondsAheadOfUtc(offsetSeconds)).

Si offsetSeconds es igual a 0, se devolverá una fecha y hora UTC.

El resultado representa el mismo momento en el tiempo que, y es igual a, este datetime.

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

qint64 QDateTime::toSecsSinceEpoch() const

Devuelve la fecha-hora como un número de segundos después del inicio, en UTC, del año 1970.

En sistemas que no soportan zonas horarias, esta función se comportará como si la hora local fuera Qt::UTC.

El comportamiento de esta función es indefinido si la fecha y hora almacenada en este objeto no es válida. Sin embargo, para todas las fechas válidas, esta función devuelve un valor único.

Véase también toMSecsSinceEpoch(), fromSecsSinceEpoch() y setSecsSinceEpoch().

[since 6.4] std::chrono::sys_time<std::chrono::milliseconds> QDateTime::toStdSysMilliseconds() const

Convierte este objeto datetime al punto de tiempo equivalente expresado en milisegundos, utilizando std::chrono::system_clock como reloj.

Nota: Esta función requiere C++20.

Esta función se introdujo en Qt 6.4.

Véase también fromStdTimePoint() y toMSecsSinceEpoch().

[since 6.4] std::chrono::sys_seconds QDateTime::toStdSysSeconds() const

Convierte este objeto datetime al punto de tiempo equivalente expresado en segundos, utilizando std::chrono::system_clock como reloj.

Nota: Esta función requiere C++20.

Esta función se introdujo en Qt 6.4.

Véase también fromStdTimePoint() y toSecsSinceEpoch().

QString QDateTime::toString(const QString &format, QCalendar cal) const

QString QDateTime::toString(QStringView format, QCalendar cal) const

Devuelve la fecha y hora como una cadena. El parámetro format determina el formato de la cadena resultante. Si se proporciona cal, determina el calendario utilizado para representar la fecha; por defecto es el gregoriano. Antes de Qt 5.14, no existía el parámetro cal y siempre se utilizaba el calendario gregoriano. Consulte QTime::toString() y QDate::toString() para conocer los especificadores admitidos para la hora y la fecha, respectivamente, en el parámetro format.

Cualquier secuencia de caracteres entre comillas simples se incluirá literalmente en la cadena de salida (sin las comillas), aunque contenga caracteres de formato. Dos comillas simples consecutivas ("''") se sustituyen por una comilla simple en la salida. Todos los demás caracteres de la cadena de formato se incluyen literalmente en la cadena de salida.

Los formatos sin separadores (por ejemplo, "ddMM") son compatibles, pero deben utilizarse con cuidado, ya que las cadenas resultantes no siempre son legibles de forma fiable (por ejemplo, si "dM" produce "212", podría significar tanto el 2 de diciembre como el 21 de febrero).

Ejemplo de cadenas de formato (suponiendo que QDateTime es 21 de mayo de 2001 14:13:09.120):

FormatoResultado
dd.MM.aaaa21.05.2001
ddd MMMM d aamar 21 mayo 01
hh:mm:ss.zzz14:13:09.120
hh:mm:ss.z14:13:09.12
h:m:s ap14:13:9

Si la fecha y hora no son válidas, se devolverá una cadena vacía.

Nota: Los nombres del día y del mes, así como los indicadores AM/PM, se dan en inglés (configuración regional C). Para obtener nombres de mes y día localizados y formas localizadas de AM/PM, utilice QLocale::system().toDateTime().

Véase también fromString(), QDate::toString(), QTime::toString() y QLocale::toString().

QString QDateTime::toString(QStringView format) const

Esta función sobrecarga QDateTime::toString().

QString QDateTime::toString(Qt::DateFormat format = Qt::TextDate) const

Devuelve la fecha y hora como una cadena en el format dado.

Si el format es Qt::TextDate, la cadena se formatea de la manera predeterminada. Los nombres del día y del mes estarán en inglés. Un ejemplo de este formato es "Wed May 20 03:40:13 1998". Para obtener un formato localizado, consulte QLocale::toString().

Si el format es Qt::ISODate, el formato de la cadena corresponde a la especificación ampliada ISO 8601 para representaciones de fechas y horas, tomando la forma aaaa-MM-ddTHH:mm:ss[Z|±HH:mm], dependiendo del timeSpec() del QDateTime. Si el timeSpec() es Qt::UTC, se añadirá Z a la cadena; si el timeSpec() es Qt::OffsetFromUTC, se añadirá a la cadena el desfase en horas y minutos respecto a UTC. Para incluir milisegundos en la fecha ISO 8601, utilice format Qt::ISODateWithMs , que corresponde a aaaa-MM-ddTHH:mm:ss.zzz[Z|±HH:mm].

Si el format es Qt::RFC2822Date, la cadena se formatea siguiendo el RFC 2822.

Si la fecha y hora no es válida, se devolverá una cadena vacía.

Advertencia: El formato Qt::ISODate sólo es válido para años comprendidos entre 0 y 9999.

Esta función sobrecarga QDateTime::toString().

Véase también fromString(), QDate::toString(), QTime::toString() y QLocale::toString().

QString QDateTime::toString(const QString &format) const

Esta función sobrecarga QDateTime::toString().

QDateTime QDateTime::toTimeZone(const QTimeZone &timeZone) const

Devuelve una copia de esta fecha y hora convertida al formato timeZone.

El resultado representa el mismo momento en el tiempo que, y es igual a, este datetime.

El resultado describe el momento en el tiempo en términos de la representación del tiempo de timeZone. Por ejemplo:

QDateTime local(QDateTime::currentDateTime());QDateTime UTC(local.toTimeZone(QTimeZone::UTC));qDebug() << "Local time is:" << local;
qDebug() << "UTC time is:" << UTC;
qDebug() << "No difference between times represented:" << local.secsTo(UTC);

Si timeZone no es válido, la fecha y hora no lo será. En caso contrario, la fecha y hora devuelta timeSpec() coincidirá con timeZone.timeSpec().

Véase también timeRepresentation(), toLocalTime(), toUTC() y toOffsetFromUtc().

QDateTime QDateTime::toUTC() const

Devuelve una copia de esta fecha y hora convertida a UTC.

El resultado representa el mismo momento en el tiempo y es igual a esta fecha y hora.

Ejemplo:

QDateTime local(QDateTime::currentDateTime());QDateTime UTC(local.toUTC());qDebug() << "Local time is:" << local;
qDebug() << "UTC time is:" << UTC;
qDebug() << "No difference between times:" << local.secsTo(UTC);

Véase también toTimeZone(), toLocalTime() y toOffsetFromUtc().

[since 6.4] QDateTime &QDateTime::operator+=(std::chrono::milliseconds duration)

Modifica este objeto datetime añadiendo la fecha duration. El objeto actualizado será posterior si duration es positivo, o anterior si es negativo.

Si este datetime no es válido, esta función no tiene efecto.

Devuelve una referencia a este objeto datetime.

Esta función se introdujo en Qt 6.4.

Véase también addMSecs().

[since 6.4] QDateTime &QDateTime::operator-=(std::chrono::milliseconds duration)

Modifica este objeto datetime restándole el valor dado duration. El objeto actualizado será anterior si duration es positivo, o posterior si es negativo.

Si este datetime no es válido, esta función no tiene efecto.

Devuelve una referencia a este objeto datetime.

Esta función se introdujo en Qt 6.4.

Véase también addMSecs.

[noexcept] QDateTime &QDateTime::operator=(const QDateTime &other)

Copia la fecha y hora de other en esto y devuelve esta copia.

Relacionados No miembros

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

Devuelve true si lhs es diferente de rhs; en caso contrario devuelve false.

Dos datetimes que utilizan diferentes representaciones de tiempo pueden tener diferentes desplazamientos de UTC. En este caso, pueden compararse de forma equivalente aunque sus date() y time() difieran, si esa diferencia coincide con la diferencia en el desfase respecto a UTC. Si sus date() y time() coinciden, la que tiene mayor desfase respecto a UTC es menor (anterior) que la que tiene menor desfase. Como resultado, los datetimes sólo están débilmente ordenados.

Desde 5.14, todos los datetimes inválidos son equivalentes y menores que todos los datetimes válidos.

Véase también operator==().

[since 6.4] QDateTime operator+(const QDateTime &dateTime, std::chrono::milliseconds duration)

[since 6.4] QDateTime operator+(std::chrono::milliseconds duration, const QDateTime &dateTime)

Devuelve un objeto QDateTime que contiene una fecha y hora duration milisegundos posterior a dateTime (o anterior si duration es negativo).

Si dateTime es inválido, se devolverá un datetime inválido.

Estas funciones se introdujeron en Qt 6.4.

Véase también addMSecs().

[since 6.4] std::chrono::milliseconds operator-(const QDateTime &lhs, const QDateTime &rhs)

Devuelve el número de milisegundos entre lhs y rhs. Si lhs es anterior a rhs, el resultado será negativo.

Devuelve 0 si alguna de las fechas no es válida.

Esta función se introdujo en Qt 6.4.

Véase también msecsTo().

[since 6.4] QDateTime operator-(const QDateTime &dateTime, std::chrono::milliseconds duration)

Devuelve un objeto QDateTime que contiene un datetime duration milisegundos anterior a dateTime (o posterior si duration es negativo).

Si dateTime es inválido, se devolverá un datetime inválido.

Esta función se introdujo en Qt 6.4.

Véase también addMSecs().

[noexcept] bool operator<(const QDateTime &lhs, const QDateTime &rhs)

Devuelve true si lhs es anterior a rhs; en caso contrario devuelve false.

Dos datetimes utilizando diferentes representaciones de tiempo pueden tener diferentes desplazamientos de UTC. En este caso, pueden compararse de forma equivalente aunque sus date() y time() difieran, si esa diferencia coincide con la diferencia de desfase respecto a UTC. Si sus date() y time() coinciden, la que tiene mayor desfase respecto a UTC es menor (anterior) que la que tiene menor desfase. Como resultado, los datetimes sólo están débilmente ordenados.

Desde 5.14, todos los datetimes inválidos son equivalentes y menores que todos los datetimes válidos.

Véase también operator==().

QDataStream &operator<<(QDataStream &out, const QDateTime &dateTime)

Escribe dateTime en el flujo out.

Véase también Serializar tipos de datos Qt.

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

Devuelve true si lhs es anterior o igual a rhs; en caso contrario devuelve false.

Dos datetimes que utilizan diferentes representaciones de tiempo pueden tener diferentes desplazamientos de UTC. En este caso, pueden compararse de forma equivalente incluso si sus date() y time() difieren, si esa diferencia coincide con la diferencia en el desfase UTC. Si sus date() y time() coinciden, la que tiene mayor desfase respecto a UTC es menor (anterior) que la que tiene menor desfase. Como resultado, los datetimes sólo están débilmente ordenados.

Desde 5.14, todos los datetimes inválidos son equivalentes y menores que todos los datetimes válidos.

Véase también operator==().

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

Devuelve true si lhs representa el mismo momento en el tiempo que rhs; en caso contrario devuelve false.

Dos datetimes que utilizan diferentes representaciones de tiempo pueden tener diferentes desplazamientos de UTC. En este caso, pueden compararse de forma equivalente incluso si sus date() y time() difieren, si esa diferencia coincide con la diferencia en el desfase UTC. Si sus date() y time() coinciden, la que tiene mayor desfase respecto a UTC es menor (anterior) que la que tiene menor desfase. Como resultado, los datetimes sólo están débilmente ordenados.

Desde 5.14, todos los datetimes inválidos son equivalentes y menores que todos los datetimes válidos.

Véase también operator!=(), operator<(), operator<=(), operator>() y operator>=().

[noexcept] bool operator>(const QDateTime &lhs, const QDateTime &rhs)

Devuelve true si lhs es posterior a rhs; en caso contrario devuelve false.

Dos datetimes que utilizan diferentes representaciones de tiempo pueden tener diferentes desplazamientos de UTC. En este caso, pueden compararse de forma equivalente aunque sus date() y time() difieran, si esa diferencia coincide con la diferencia de desfase respecto a UTC. Si sus date() y time() coinciden, la que tiene mayor desfase respecto a UTC es menor (anterior) que la que tiene menor desfase. Como resultado, los datetimes sólo están débilmente ordenados.

Desde 5.14, todos los datetimes inválidos son equivalentes y menores que todos los datetimes válidos.

Véase también operator==().

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

Devuelve true si lhs es posterior o igual a rhs; en caso contrario devuelve false.

Dos datetimes que utilizan diferentes representaciones de tiempo pueden tener diferentes desplazamientos de UTC. En este caso, pueden compararse de forma equivalente incluso si sus date() y time() difieren, si esa diferencia coincide con la diferencia en el desfase UTC. Si sus date() y time() coinciden, la que tiene mayor desfase respecto a UTC es menor (anterior) que la que tiene menor desfase. Como resultado, los datetimes sólo están débilmente ordenados.

Desde 5.14, todos los datetimes inválidos son equivalentes y menores que todos los datetimes válidos.

Véase también operator==().

QDataStream &operator>>(QDataStream &in, QDateTime &dateTime)

Lee un datetime del stream in en dateTime.

Ver también Serializar tipos de datos Qt.

© 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.