QDate Class
La clase QDate proporciona funciones de fecha. Más...
| Cabecera: | #include <QDate> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
Esta clase es fuertemente comparable.
Esta clase es fuertemente comparable con std::chrono::year_month_day, std::chrono::year_month_day_last, std::chrono::year_month_weekday, y std::chrono::year_month_weekday_last.
Estos operadores de comparación sólo están disponibles cuando se utiliza C++20.
Nota: Todas las funciones de esta clase son reentrantes.
Funciones públicas
| QDate() | |
(since 6.4) | QDate(std::chrono::year_month_day date) |
(since 6.4) | QDate(std::chrono::year_month_day_last date) |
(since 6.4) | QDate(std::chrono::year_month_weekday date) |
(since 6.4) | QDate(std::chrono::year_month_weekday_last date) |
| QDate(int y, int m, int d) | |
| QDate | addDays(qint64 ndays) const |
(since 6.4) QDate | addDuration(std::chrono::days ndays) const |
| QDate | addMonths(int nmonths, QCalendar cal) const |
| QDate | addMonths(int nmonths) const |
| QDate | addYears(int nyears, QCalendar cal) const |
| QDate | addYears(int nyears) const |
| int | day(QCalendar cal) const |
| int | day() const |
| int | dayOfWeek(QCalendar cal) const |
| int | dayOfWeek() const |
| int | dayOfYear(QCalendar cal) const |
| int | dayOfYear() const |
| int | daysInMonth(QCalendar cal) const |
| int | daysInMonth() const |
| int | daysInYear(QCalendar cal) const |
| int | daysInYear() const |
| qint64 | daysTo(QDate d) const |
| QDateTime | endOfDay(const QTimeZone &zone) const |
(since 6.5) QDateTime | endOfDay() const |
| void | getDate(int *year, int *month, int *day) const |
| bool | isNull() const |
| bool | isValid() const |
| int | month(QCalendar cal) const |
| int | month() const |
| bool | setDate(int year, int month, int day) |
| bool | setDate(int year, int month, int day, QCalendar cal) |
| QDateTime | startOfDay(const QTimeZone &zone) const |
(since 6.5) QDateTime | startOfDay() const |
| qint64 | toJulianDay() const |
| std::chrono::sys_days | toStdSysDays() 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 |
| int | weekNumber(int *yearNumber = nullptr) const |
| int | year(QCalendar cal) const |
| int | year() const |
Miembros públicos estáticos
| QDate | currentDate() |
| QDate | fromJulianDay(qint64 jd) |
(since 6.4) QDate | fromStdSysDays(const std::chrono::sys_days &days) |
| QDate | fromString(const QString &string, const QString &format, int baseYear, QCalendar cal) |
(since 6.0) QDate | fromString(QStringView string, Qt::DateFormat format = Qt::TextDate) |
| QDate | fromString(const QString &string, Qt::DateFormat format = Qt::TextDate) |
(since 6.0) QDate | fromString(QStringView string, QStringView format, QCalendar cal) |
(since 6.7) QDate | fromString(QStringView string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear) |
(since 6.0) QDate | fromString(const QString &string, QStringView format, QCalendar cal) |
(since 6.7) QDate | fromString(const QString &string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear) |
| QDate | fromString(const QString &string, const QString &format, QCalendar cal) |
(since 6.7) QDate | fromString(const QString &string, const QString &format, int baseYear = QLocale::DefaultTwoDigitBaseYear) |
(since 6.7) QDate | fromString(QStringView string, QStringView format, int baseYear, QCalendar cal) |
(since 6.0) QDate | fromString(const QString &string, QStringView format, int baseYear, QCalendar cal) |
| bool | isLeapYear(int year) |
| bool | isValid(int year, int month, int day) |
No miembros relacionados
| bool | operator!=(const QDate &lhs, const QDate &rhs) |
(since 6.11) QDate & | operator++(QDate &date) |
(since 6.11) QDate | operator++(QDate &date, int) |
(since 6.11) QDate & | operator--(QDate &date) |
(since 6.11) QDate | operator--(QDate &date, int) |
| bool | operator<(const QDate &lhs, const QDate &rhs) |
| QDataStream & | operator<<(QDataStream &out, QDate date) |
| bool | operator<=(const QDate &lhs, const QDate &rhs) |
| bool | operator==(const QDate &lhs, const QDate &rhs) |
| bool | operator>(const QDate &lhs, const QDate &rhs) |
| bool | operator>=(const QDate &lhs, const QDate &rhs) |
| QDataStream & | operator>>(QDataStream &in, QDate &date) |
Descripción Detallada
Un objeto QDate representa un día en particular, independientemente del calendario, configuración regional u otros ajustes utilizados al crearlo o suministrados por el sistema. Puede informar del año, mes y día del mes que representan el día con respecto al calendario gregoriano proléptico o a cualquier calendario suministrado como objeto QCalendar. Los objetos QDate deben pasarse por valor en lugar de por referencia a const; simplemente empaquetan qint64.
Un objeto QDate se crea típicamente dando explícitamente los números de año, mes y día. Tenga en cuenta que QDate interpreta los números de año inferiores a 100 como presentados, es decir, como los años del 1 al 99, sin añadir ningún desplazamiento. La función estática currentDate() crea un objeto QDate que contiene la fecha leída del reloj del sistema. También se puede establecer una fecha explícita utilizando setDate(). La función fromString() devuelve una QDate dada una cadena y un formato de fecha que se utiliza para interpretar la fecha dentro de la cadena.
Las funciones year(), month() y day() permiten acceder a los números de año, mes y día. Cuando se necesita más de uno de estos valores, es más eficiente llamar a QCalendar::partsFromDate(), para ahorrar la repetición de cálculos calendáricos (potencialmente caros).
También se proporcionan las funciones dayOfWeek() y dayOfYear(). La misma información se proporciona en formato textual mediante toString(). QLocale puede asignar los números de los días a nombres, QCalendar puede asignar los números de los meses a nombres.
QDate proporciona un conjunto completo de operadores para comparar dos objetos QDate donde menor significa anterior, y mayor significa posterior.
Puede incrementar (o decrementar) una fecha en un número dado de 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.
Las funciones daysInMonth() y daysInYear() devuelven cuántos días hay en el mes y el año de esta fecha, respectivamente. La función isLeapYear() indica si una fecha se encuentra en un año bisiesto. QCalendar también puede proporcionar esta información, en algunos casos de forma más cómoda.
Observaciones
Nota: Todas las conversiones a y desde formatos de cadena se realizan utilizando la configuración regional de C. Para conversiones localizadas, véase QLocale.
En el calendario gregoriano, no hay año 0. Las fechas en ese año se consideran inválidas. 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, QDate(1, 1, 1), es el 31 de diciembre 1 AEC, QDate(-1, 12, 31). Varios otros calendarios se comportan de manera similar; véase QCalendar::hasYearZero().
Intervalo de fechas válidas
Las fechas se almacenan internamente como un número de Día Juliano modificado, una cuenta entera de cada día en un rango contiguo, siendo el 24 de noviembre de 4714 AEC en el calendario gregoriano el Día Juliano 0 (1 de enero de 4713 AEC en el calendario juliano). Además de ser una forma eficiente y precisa de almacenar una fecha absoluta, es adecuada para convertir una fecha a otros sistemas de calendario como el hebreo, el islámico o el chino. A efectos de QDate, los días julianos se delimitan a medianoche y, para los de QDateTime, en la zona utilizada por el datetime. (Esto difiere de la definición formal, que delimita los Días Julianos al mediodía UTC). El número del Día Juliano puede obtenerse utilizando QDate::toJulianDay() y puede establecerse utilizando QDate::fromJulianDay().
El rango de números de Día Juliano que QDate puede representar está, por razones técnicas, limitado a entre -784350574879 y 784354017364, lo que significa desde antes de 2 mil millones AEC hasta después de 2 mil millones EC. Esto es más de siete veces el rango de fechas que puede representar QDateTime.
Véase también QTime, QDateTime, QCalendar, QDateTime::YearRange, QDateEdit, QDateTimeEdit, y QCalendarWidget.
Documentación de la función de miembro
[constexpr] QDate::QDate()
Construye una fecha nula. Las fechas nulas no son válidas.
Véase también isNull() y isValid().
[constexpr noexcept, since 6.4] QDate::QDate(std::chrono::year_month_day date)
[constexpr noexcept, since 6.4] QDate::QDate(std::chrono::year_month_day_last date)
[constexpr noexcept, since 6.4] QDate::QDate(std::chrono::year_month_weekday date)
[constexpr noexcept, since 6.4] QDate::QDate(std::chrono::year_month_weekday_last date)
Construye un QDate que representa la misma fecha que date. Esto permite una fácil interoperabilidad entre las clases de calendario de la biblioteca estándar y las clases datetime de Qt.
Por ejemplo:
// 23 April 2012: QDate date = std::chrono::year_month_day(std::chrono::year(2012), std::chrono::month(4), std::chrono::day(23)); // Same, under `using std::chrono` convenience: QDate dateWithLiterals1 = 23d / April / 2012y; QDate dateWithLiterals2 = 2012y / April / 23; // Last day of February 2000 QDate lastDayFeb2020 = 2000y / February / last; // First Monday of January 2020: QDate firstMonday = 2020y / January / Monday[0]; // Last Monday of January 2020: QDate lastMonday = 2020y / January / Monday[last];
Nota: A diferencia de QDate, std::chrono::year y las clases relacionadas presentan el año cero. Esto significa que si date está en el año cero o antes, el objeto QDate resultante tendrá un año uno menos que el especificado por date.
Nota: Esta función requiere C++20.
Estas funciones se introdujeron en Qt 6.4.
QDate::QDate(int y, int m, int d)
Construye una fecha con el año y, el mes m y el día d.
La fecha se entiende en términos del calendario gregoriano. Si la fecha especificada no es válida, la fecha no se construye y isValid() devuelve false.
Advertencia: Los años 1 a 99 se interpretan tal cual. El año 0 no es válido.
Véase también isValid() y QCalendar::dateFromParts().
QDate QDate::addDays(qint64 ndays) const
Devuelve un objeto QDate que contiene una fecha ndays posterior a la fecha de este objeto (o anterior si ndays es negativo).
Devuelve una fecha nula si la fecha actual no es válida o la nueva fecha está fuera de rango.
Véase también addMonths(), addYears() y daysTo().
[since 6.4] QDate QDate::addDuration(std::chrono::days ndays) const
Devuelve un objeto QDate que contiene una fecha ndays posterior a la fecha de este objeto (o anterior si ndays es negativo).
Devuelve una fecha nula si la fecha actual no es válida o la nueva fecha está fuera de rango.
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.
Nota: Esta función requiere C++20.
Esta función se introdujo en Qt 6.4.
Véase también addMonths(), addYears(), y daysTo().
QDate QDate::addMonths(int nmonths, QCalendar cal) const
Devuelve un objeto QDate que contiene una fecha nmonths posterior a la fecha de este objeto (o anterior si nmonths es negativo).
Utiliza cal como calendario, si se suministra, en caso contrario el calendario gregoriano.
Nota: Si la combinación día/mes final no existe en el mes/año resultante, esta función devolverá una fecha que es la última fecha válida en el mes seleccionado.
Véase también addDays() y addYears().
QDate QDate::addMonths(int nmonths) const
Esta función sobrecarga QDate::addMonths().
QDate QDate::addYears(int nyears, QCalendar cal) const
Devuelve un objeto QDate que contiene una fecha nyears posterior a la fecha de este objeto (o anterior si nyears es negativo).
Utiliza cal como calendario, si se suministra, si no, el calendario gregoriano.
Nota: Si la combinación día/mes final no existe en el año resultante (por ejemplo, para el calendario gregoriano, si la fecha era el 29 de febrero y el año final no es bisiesto), esta función devolverá una fecha que es la última fecha válida en el mes dado (en el ejemplo, el 28 de febrero).
Véase también addDays() y addMonths().
QDate QDate::addYears(int nyears) const
Esta función sobrecarga QDate::addYears().
[static] QDate QDate::currentDate()
Devuelve la fecha actual del reloj del sistema.
Véase también QTime::currentTime() y QDateTime::currentDateTime().
int QDate::day(QCalendar cal) const
Devuelve el día del mes para esta fecha.
Utiliza cal como calendario si se suministra, de lo contrario el calendario gregoriano (para el que el retorno va de 1 a 31). Devuelve 0 si la fecha no es válida.
Véase también year(), month(), dayOfWeek() y QCalendar::partsFromDate().
int QDate::day() const
Esta función sobrecarga QDate::day().
int QDate::dayOfWeek(QCalendar cal) const
Devuelve el día de la semana (1 = lunes a 7 = domingo) para esta fecha.
Utiliza cal como calendario si se suministra, de lo contrario el calendario gregoriano. Devuelve 0 si la fecha no es válida. Algunos calendarios pueden dar un significado especial (por ejemplo, días intercalares) a valores superiores a 7.
Véase también day(), dayOfYear(), QCalendar::dayOfWeek(), y Qt::DayOfWeek.
int QDate::dayOfWeek() const
Esta función sobrecarga QDate::dayOfWeek().
int QDate::dayOfYear(QCalendar cal) const
Devuelve el día del año (1 para el primer día) para esta fecha.
Utiliza cal como calendario si se suministra, de lo contrario el calendario gregoriano. Devuelve 0 si la fecha o el primer día del año no son válidos.
Véase también day(), dayOfWeek() y QCalendar::daysInYear().
int QDate::dayOfYear() const
Esta función sobrecarga QDate::dayOfYear().
int QDate::daysInMonth(QCalendar cal) const
Devuelve el número de días del mes para esta fecha.
Utiliza cal como calendario si se suministra, en caso contrario el calendario gregoriano (para el que el resultado oscila entre 28 y 31). Devuelve 0 si la fecha no es válida.
Véase también day(), daysInYear(), QCalendar::daysInMonth(), QCalendar::maximumDaysInMonth() y QCalendar::minimumDaysInMonth().
int QDate::daysInMonth() const
Esta función sobrecarga QDate::daysInMonth().
int QDate::daysInYear(QCalendar cal) const
Devuelve el número de días del año para esta fecha.
Utiliza cal como calendario si se suministra, de lo contrario el calendario gregoriano (para el que el resultado es 365 o 366). Devuelve 0 si la fecha no es válida.
Véase también day(), daysInMonth(), QCalendar::daysInYear() y QCalendar::maximumMonthsInYear().
int QDate::daysInYear() const
Esta función sobrecarga QDate::daysInYear().
qint64 QDate::daysTo(QDate d) const
Devuelve el número de días desde esta fecha hasta d (que es negativo si d es anterior a esta fecha).
Devuelve 0 si alguna de las fechas no es válida.
Ejemplo:
QDate d1(1995, 5, 17); // May 17, 1995 QDate d2(1995, 5, 20); // May 20, 1995 d1.daysTo(d2); // returns 3 d2.daysTo(d1); // returns -3
Véase también addDays().
QDateTime QDate::endOfDay(const QTimeZone &zone) const
Devuelve el momento final del día.
El momento en que termina un día depende de cómo se describa el tiempo: cada día comienza y termina antes para los que están en zonas horarias más al oeste y más tarde para los que están en zonas horarias más al este. La representación del tiempo a utilizar puede especificarse mediante una hora opcional zone. La representación horaria por defecto es la hora local del sistema.
Normalmente, el final del día es un milisegundo antes de la medianoche, las 24:00: sin embargo, si una transición de zona horaria hace que la fecha dada se salte ese momento (por ejemplo, un adelanto de DST saltándose las 23:00 y la hora siguiente), se devuelve la hora real más tardía del día. Esto sólo puede ocurrir cuando la representación de la hora es una zona horaria o la hora local.
Cuando zone tiene un timeSpec() de Qt::OffsetFromUTC o Qt::UTC, la representación de la hora no tiene transiciones, por lo que el final del día es QTime(23, 59, 59, 999).
En el raro caso de una fecha que se haya saltado por completo (esto ocurre cuando una zona al este de la línea internacional de fecha pasa a estar al oeste de la misma), el retorno será inválido. Pasar una zona horaria inválida como zone también producirá un resultado inválido, al igual que las fechas que terminen fuera del rango representable por QDateTime.
Véase también startOfDay().
[since 6.5] QDateTime QDate::endOfDay() const
Esta función sobrecarga QDate::endOfDay().
Esta función se introdujo en Qt 6.5.
[static constexpr] QDate QDate::fromJulianDay(qint64 jd)
Convierte el día juliano jd a QDate.
Véase también toJulianDay().
[static constexpr noexcept, since 6.4] QDate QDate::fromStdSysDays(const std::chrono::sys_days &days)
Devuelve un QDate days días después del 1 de enero de 1970 (la época UNIX). Si days es negativo, la fecha devuelta será anterior a la época.
Nota: Esta función requiere C++20.
Esta función se introdujo en Qt 6.4.
Véase también toStdSysDays().
[static] QDate QDate::fromString(const QString &string, const QString &format, int baseYear, QCalendar cal)
Devuelve el QDate representado por el string, usando el format dado, o una fecha inválida si la cadena no puede ser analizada.
Utiliza cal como calendario si se proporciona; en caso contrario, utiliza el calendario gregoriano. Los rangos de valores en las descripciones de formato a continuación son para este último; pueden ser diferentes para otros calendarios.
Estas expresiones pueden utilizarse para el formato:
| Expresión | Salida |
|---|---|
| d | El día como un número sin un cero a la izquierda (1 a 31) |
| dd | El día como un número con un cero a la izquierda (01 a 31) |
| ddd | El nombre abreviado del día ('Lun' a 'Dom'). |
| dddd | El nombre largo del día ('lunes' a 'domingo'). |
| M | El mes como un número sin un cero a la izquierda (1 a 12). |
| MM | El mes como un número con un cero a la izquierda (01 a 12) |
| MMM | El nombre abreviado del mes ('Ene' a 'Dic'). |
| MMMM | El nombre largo del mes ('enero' a 'diciembre'). |
| yy | El año como un número de dos dígitos (00 a 99) |
| aaaa | El año como un número de cuatro dígitos, posiblemente más un signo menos para los años negativos. |
Nota: Los nombres de día y mes deben indicarse en inglés (configuración regional C). Si desea reconocer nombres de día y mes localizados, utilice QLocale::system().toDate().
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. Por ejemplo:
Si no se cumple el formato, se devuelve un QDate no válido. Las expresiones que no esperan ceros a la izquierda (d, M) serán codiciosas. Esto significa que utilizarán dos dígitos aunque esto las sitúe fuera del rango de valores aceptados y deje muy pocos dígitos para otras secciones. Por ejemplo, la siguiente cadena de formato podría haber significado 30 de enero, pero la M cogerá dos dígitos, dando como resultado una fecha no válida:
Para cualquier campo que no esté representado en el formato se utilizan los siguientes valores por defecto:
| Campo | Valor por defecto |
|---|---|
| Año | baseYear (o 1900) |
| Mes | 1 (enero) |
| Día | 1 |
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. Pasando 1976 como baseYear se seleccionará un año desde 1976 hasta 2075, por ejemplo. Cuando el formato también incluye el mes, el día (del mes) y el día de la semana, éstos bastan para dar a entender el siglo. En tal caso, se selecciona una fecha coincidente en el siglo más próximo al indicado por baseYear, prefiriendo más tarde que más temprano. Consulte QCalendar::matchCenturyToWeekday() y Date ambiguities para más detalles,
Los siguientes ejemplos muestran los valores por defecto:
QDate::fromString("1.30", "M.d"); // January 30 1900 QDate::fromString("20000110", "yyyyMMdd"); // January 10, 2000 QDate::fromString("20000110", "yyyyMd"); // January 10, 2000
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 anterior, posiblemente repetida tantas veces como copias haya de ella, terminando con un residuo que puede ser una expresión más corta. Así, 'MMMMMMMMMM' coincidiría con "MayMay05" y establecería el mes en mayo. Del mismo modo, 'MMMMMM' coincidiría con "May08" y lo encontraría incoherente, dando lugar a una fecha no válida.
Ambigüedades de fechas
Cada cultura utiliza un formato distinto para las fechas, por lo que los usuarios pueden confundir el orden en el que deben indicarse los campos de fecha. Por ejemplo, "Wed 28-Nov-01" puede significar el 1 de noviembre de 2028 o el 28 de noviembre de 2001 (ambos son miércoles). Utilizando el formato "ddd yy-MMM-dd" se interpretará de la primera manera, utilizando "ddd dd-MMM-yy" de la segunda. Sin embargo, lo que el usuario quiso decir puede depender de la forma en que el usuario escribe normalmente las fechas, más que del formato que el código esperaba.
El ejemplo considerado anteriormente mezclaba el día del mes y un año de dos dígitos. Una confusión similar puede surgir al intercambiar el mes y el día del mes, cuando ambos se dan como números. En estos casos, incluir un campo de día de la semana en el formato de fecha puede proporcionar cierta redundancia, que puede ayudar a detectar errores de este tipo. Sin embargo, como en el ejemplo anterior, esto no siempre es eficaz: el intercambio de dos campos (o sus significados) puede producir fechas con el mismo día de la semana.
Incluir un día de la semana en el formato también puede resolver el siglo de una fecha especificada utilizando sólo los dos últimos dígitos de su año. Desgraciadamente, cuando se combina con una fecha en la que el usuario (u otra fuente de datos) ha confundido dos de los campos, esta resolución puede llevar a encontrar una fecha que sí coincide con la lectura del formato pero que no es la que pretendía su autor. Del mismo modo, si el usuario simplemente se equivoca en el día de la semana, en una fecha por lo demás correcta, esto puede llevar a una fecha en un siglo diferente. En cada caso, encontrar una fecha en un siglo diferente puede convertir una fecha introducida erróneamente en otra muy distinta.
La mejor forma de evitar ambigüedades en las fechas es utilizar años y meses de cuatro dígitos especificados por su nombre (completo o abreviado), idealmente recogidos mediante modismos de interfaz de usuario que dejen bien claro al usuario qué parte de la fecha está seleccionando. Incluir el día de la semana también puede ayudar a comprobar la coherencia de los datos. Cuando los datos proceden del usuario y utilizan un formato suministrado por una configuración regional seleccionada por el usuario, es mejor utilizar un formato largo, ya que los formatos cortos suelen utilizar años de dos dígitos. Por supuesto, no siempre es posible controlar el formato: los datos pueden proceder de una fuente que no controlas, por ejemplo.
Como consecuencia de estas posibles fuentes de confusión, sobre todo cuando no se puede estar seguro de que se esté utilizando un formato inequívoco, es importante comprobar que el resultado de leer una cadena como fecha no sólo es válido, sino razonable para el propósito para el que se suministró. Si el resultado está fuera de algún rango de valores razonables, puede valer la pena hacer que el usuario confirme su selección de fecha, mostrando la fecha leída de la cadena en un formato largo que sí incluya el nombre del mes y el año de cuatro dígitos, para que le resulte más fácil reconocer cualquier error.
Véase también toString(), QDateTime::fromString(), QTime::fromString() y QLocale::toDate().
[static, since 6.0] QDate QDate::fromString(QStringView string, Qt::DateFormat format = Qt::TextDate)
Esta función sobrecarga QDate::fromString().
Esta función se introdujo en Qt 6.0.
[static] QDate QDate::fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)
Devuelve el QDate representado por el string, utilizando el format dado, o una fecha inválida si la cadena no puede ser analizada.
Nota para Qt::TextDate: sólo se reconocen los nombres de mes 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::toDate().
[static, since 6.0] QDate QDate::fromString(QStringView string, QStringView format, QCalendar cal)
Esta función sobrecarga QDate::fromString().
Esta función se introdujo en Qt 6.0.
[static, since 6.7] QDate QDate::fromString(QStringView string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
Utiliza un QCalendar construido por defecto.
Esta función sobrecarga QDate::fromString().
Esta función se introdujo en Qt 6.7.
[static, since 6.0] QDate QDate::fromString(const QString &string, QStringView format, QCalendar cal)
Esta función sobrecarga QDate::fromString().
Esta función se introdujo en Qt 6.0.
[static, since 6.7] QDate QDate::fromString(const QString &string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
Utiliza un QCalendar construido por defecto.
Esta función sobrecarga QDate::fromString().
Esta función se introdujo en Qt 6.7.
[static] QDate QDate::fromString(const QString &string, const QString &format, QCalendar cal)
Esta función sobrecarga QDate::fromString().
[static, since 6.7] QDate QDate::fromString(const QString &string, const QString &format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
Utiliza un QCalendar construido por defecto.
Esta función sobrecarga QDate::fromString().
Esta función se introdujo en Qt 6.7.
[static, since 6.7] QDate QDate::fromString(QStringView string, QStringView format, int baseYear, QCalendar cal)
Esta función sobrecarga QDate::fromString().
Esta función se introdujo en Qt 6.7.
[static, since 6.0] QDate QDate::fromString(const QString &string, QStringView format, int baseYear, QCalendar cal)
Esta función sobrecarga QDate::fromString().
Esta función se introdujo en Qt 6.0.
void QDate::getDate(int *year, int *month, int *day) const
Extrae el año, mes y día de la fecha y los asigna a *year, *month, y *day. Los punteros pueden ser nulos.
Devuelve 0 si la fecha no es válida.
Nota: En versiones de Qt anteriores a la 5.7, esta función está marcada como noconst.
Véase también year(), month(), day(), isValid(), y QCalendar::partsFromDate().
[static] bool QDate::isLeapYear(int year)
Devuelve true si el year especificado es un año bisiesto en el calendario gregoriano; en caso contrario devuelve false.
Véase también QCalendar::isLeapYear().
[constexpr] bool QDate::isNull() const
Devuelve true si la fecha es nula; en caso contrario devuelve false. Una fecha nula no es válida.
Nota: El comportamiento de esta función es equivalente a isValid().
Véase también isValid().
[constexpr] bool QDate::isValid() const
Devuelve true si esta fecha es válida; en caso contrario devuelve false.
Véase también isNull() y QCalendar::isDateValid().
[static] bool QDate::isValid(int year, int month, int day)
Devuelve true si la fecha especificada (year, month, y day) es válida en el calendario gregoriano; en caso contrario devuelve false.
Ejemplo:
QDate::isValid(2002, 5, 17); // true QDate::isValid(2002, 2, 30); // false (Feb 30 does not exist) QDate::isValid(2004, 2, 29); // true (2004 is a leap year) QDate::isValid(2000, 2, 29); // true (2000 is a leap year) QDate::isValid(2006, 2, 29); // false (2006 is not a leap year) QDate::isValid(2100, 2, 29); // false (2100 is not a leap year) QDate::isValid(1202, 6, 6); // true (even though 1202 is pre-Gregorian)
Esta función sobrecarga QDate::isValid().
Véase también isNull(), setDate(), y QCalendar::isDateValid().
int QDate::month(QCalendar cal) const
Devuelve el mes-número de la fecha.
Numera los meses del año empezando por 1 para el primero. Utiliza cal como calendario si se suministra, de lo contrario el calendario gregoriano, para el que la numeración de los meses es la siguiente:
- 1 = "Enero"
- 2 = "Febrero".
- 3 = "Marzo".
- 4 = "Abril
- 5 = "Mayo
- 6 = "Junio
- 7 = "Julio
- 8 = "Agosto
- 9 = "Septiembre
- 10 = "Octubre
- 11 = "Noviembre
- 12 = "Diciembre
Devuelve 0 si la fecha no es válida. Tenga en cuenta que algunos calendarios pueden tener más de 12 meses en algunos años.
Véase también year(), day() y QCalendar::partsFromDate().
int QDate::month() const
Esta función sobrecarga QDate::month().
bool QDate::setDate(int year, int month, int day)
Establece esto para representar la fecha, en el calendario gregoriano, con los números dados year, month y day. Devuelve true si la fecha resultante es válida; en caso contrario, hace que represente una fecha no válida y devuelve false.
Véase también isValid() y QCalendar::dateFromParts().
bool QDate::setDate(int year, int month, int day, QCalendar cal)
Establece esto para representar la fecha, en el calendario dado cal, con los números dados year, month y day. Devuelve true si la fecha resultante es válida; en caso contrario, hace que represente una fecha no válida y devuelve false.
Véase también isValid() y QCalendar::dateFromParts().
QDateTime QDate::startOfDay(const QTimeZone &zone) const
Devuelve el momento de inicio del día.
El momento en que comienza un día depende de cómo se describa el tiempo: cada día comienza y termina antes para los que están en zonas horarias más al oeste y más tarde para los que están en zonas horarias más al este. La representación del tiempo a utilizar puede especificarse mediante una hora opcional zone. La representación horaria por defecto es la hora local del sistema.
Normalmente, el comienzo del día es a medianoche, 00:00: sin embargo, si una transición de zona horaria hace que la fecha dada se salte esa medianoche (por ejemplo, un cambio de horario de verano que se salta la primera hora del día), se devuelve la hora real más temprana del día. Esto sólo puede ocurrir cuando la representación de la hora es una zona horaria o la hora local.
Cuando zone tiene un timeSpec() de es Qt::OffsetFromUTC o Qt::UTC, la representación horaria no tiene transiciones, por lo que el inicio del día es QTime(0, 0).
En el raro caso de una fecha que se haya omitido por completo (esto ocurre cuando una zona al este de la línea internacional de fecha pasa a estar al oeste de la misma), el retorno será inválido. Pasar una zona horaria inválida como zone también producirá un resultado inválido, al igual que las fechas que comiencen fuera del rango representable por QDateTime.
Véase también endOfDay().
[since 6.5] QDateTime QDate::startOfDay() const
Esta función sobrecarga QDate::startOfDay().
Esta función se introdujo en Qt 6.5.
[constexpr] qint64 QDate::toJulianDay() const
Convierte la fecha en un día juliano.
Véase también fromJulianDay().
[constexpr noexcept] std::chrono::sys_days QDate::toStdSysDays() const
Devuelve el número de días entre el 1 de enero de 1970 (la época UNIX) y esta fecha, representada como un objeto std::chrono::sys_days. Si esta fecha es anterior a la época, el número de días será negativo.
Nota: Esta función requiere C++20.
Véase también fromStdSysDays() y daysTo().
QString QDate::toString(const QString &format, QCalendar cal) const
QString QDate::toString(QStringView format, QCalendar cal) const
Devuelve la fecha en forma de 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.
Estas expresiones pueden utilizarse en el parámetro format:
| Expresión | Salida |
|---|---|
| d | El día como un número sin un cero a la izquierda (1 a 31) |
| dd | El día como un número con un cero a la izquierda (01 a 31) |
| ddd | El nombre abreviado del día ('Lun' a 'Dom'). |
| dddd | El nombre largo del día ('lunes' a 'domingo'). |
| M | El mes como un número sin un cero a la izquierda (1 a 12). |
| MM | El mes como un número con un cero a la izquierda (01 a 12) |
| MMM | El nombre abreviado del mes ('Ene' a 'Dic'). |
| MMMM | El nombre largo del mes ('enero' a 'diciembre'). |
| yy | El año como un número de dos dígitos (00 a 99) |
| aaaa | El año como número de cuatro dígitos. Si el año es negativo, se le añade un signo menos, con lo que se obtienen cinco caracteres. |
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 QDate sea el 20 de julio de 1969):
| Formato | Resultado |
|---|---|
| dd.MM.aaaa | 20.07.1969 |
| ddd MMMM d aa | Dom 20 Julio 69 |
| 'El día es' dddd | El día es domingo |
Si la fecha no es válida, se devuelve una cadena vacía.
Nota: Los nombres de día y mes se dan en inglés (configuración regional C). Para obtener nombres de día y mes localizados, utilice QLocale::system().toString().
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í, 'MMMMMMMMMM' para una fecha de mayo aportará "MayMay05" a la salida.
Véase también fromString(), QDateTime::toString(), QTime::toString() y QLocale::toString().
QString QDate::toString(QStringView format) const
Esta función sobrecarga QDate::toString().
QString QDate::toString(Qt::DateFormat format = Qt::TextDate) const
Devuelve la fecha en forma de cadena. El parámetro format determina el formato de la cadena.
Si format es Qt::TextDate, la cadena tendrá el formato predeterminado. Los nombres del día y del mes estarán en inglés. Un ejemplo de este formato es "Sat May 20 1995". Para un formato localizado, consulte QLocale::toString().
Si format es Qt::ISODate, el formato de cadena corresponde a la especificación ampliada ISO 8601 para representaciones de fechas y horas, tomando la forma aaaa-MM-dd, donde aaaa es el año, MM es el mes del año (entre 01 y 12), y dd es el día del mes entre 01 y 31.
Si format es Qt::RFC2822Date, la cadena se formatea de manera compatible con RFC 2822. Un ejemplo de este formato es "20 de mayo de 1995".
Si la fecha 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 QDate::toString().
Véase también fromString() y QLocale::toString().
QString QDate::toString(const QString &format) const
Esta función sobrecarga QDate::toString().
int QDate::weekNumber(int *yearNumber = nullptr) const
Devuelve el número de semana ISO 8601 (de 1 a 53).
Devuelve 0 si la fecha no es válida. En caso contrario, devuelve el número de semana de la fecha. Si yearNumber no es nullptr (su valor por defecto), almacena el año como *yearNumber.
De acuerdo con ISO 8601, cada semana cae en el año al que pertenecen la mayoría de sus días, en el calendario gregoriano. Como la semana de ISO 8601 comienza el lunes, éste es el año en el que cae el jueves de la semana. La mayoría de los años tienen 52 semanas, pero algunos tienen 53.
Nota: *yearNumber no siempre es lo mismo que year(). Por ejemplo, el 1 de enero de 2000 tiene la semana número 52 del año 1999, y el 31 de diciembre de 2002 tiene la semana número 1 del año 2003.
Véase también isValid().
int QDate::year(QCalendar cal) const
Devuelve el año de esta fecha.
Utiliza cal como calendario, si se suministra, de lo contrario el calendario gregoriano.
Devuelve 0 si la fecha no es válida. Para algunos calendarios, las fechas anteriores a su primer año pueden ser todas inválidas.
Si se utiliza un calendario que tiene un año 0, compruebe mediante isValid() si el retorno es 0. Tales calendarios utilizan números de año negativos de la forma obvia, con el año 1 precedido por el año 0, a su vez precedido por el año -1 y así sucesivamente.
Algunos calendarios, a pesar de no tener año 0, tienen una numeración convencional de los años anteriores a su primer año, contando hacia atrás desde 1. Por ejemplo, en el calendario gregoriano proléptico, los años sucesivos anteriores a 1 EC (el primer año) se identifican como 1 BCE, 2 BCE, 3 BCE y así sucesivamente. En este tipo de calendarios, se utilizan números de año negativos para indicar estos años anteriores al año 1, con -1 indicando el año anterior al 1.
Véase también month(), day(), QCalendar::hasYearZero(), QCalendar::isProleptic() y QCalendar::partsFromDate().
int QDate::year() const
Esta función sobrecarga QDate::year().
No miembros relacionados
[constexpr noexcept] bool operator!=(const QDate &lhs, const QDate &rhs)
Devuelve true si lhs y rhs representan días distintos; en caso contrario devuelve false.
Véase también operator==().
[since 6.11] QDate &operator++(QDate &date)
El operador de prefijo ++, añade un día a date y devuelve una referencia al objeto fecha modificado.
Esta función se introdujo en Qt 6.11.
Véase también addDays() y operator--().
[since 6.11] QDate operator++(QDate &date, int)
El operador postfijo ++, añade un día a date y devuelve una copia de date con la fecha anterior.
Esta función se introdujo en Qt 6.11.
Véase también addDays() y operator--().
[since 6.11] QDate &operator--(QDate &date)
El operador prefijo --, resta un día de date y devuelve una referencia al objeto fecha modificada.
Esta función se introdujo en Qt 6.11.
Véase también addDays() y operator++().
[since 6.11] QDate operator--(QDate &date, int)
El operador postfijo --, resta un día de date y devuelve una copia de date con la siguiente fecha.
Esta función se introdujo en Qt 6.11.
Véase también addDays() y operator++().
[constexpr noexcept] bool operator<(const QDate &lhs, const QDate &rhs)
Devuelve true si lhs es anterior a rhs; en caso contrario devuelve false.
QDataStream &operator<<(QDataStream &out, QDate date)
Escribe el date al stream out.
Ver también Serializar tipos de datos Qt.
[constexpr noexcept] bool operator<=(const QDate &lhs, const QDate &rhs)
Devuelve true si lhs es anterior o igual a rhs; en caso contrario devuelve false.
[constexpr noexcept] bool operator==(const QDate &lhs, const QDate &rhs)
Devuelve true si lhs y rhs representan el mismo día, en caso contrario false.
[constexpr noexcept] bool operator>(const QDate &lhs, const QDate &rhs)
Devuelve true si lhs es posterior a rhs; en caso contrario devuelve false.
[constexpr noexcept] bool operator>=(const QDate &lhs, const QDate &rhs)
Devuelve true si lhs es posterior o igual a rhs; en caso contrario devuelve false.
QDataStream &operator>>(QDataStream &in, QDate &date)
Lee una fecha del flujo in en date.
Véase 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.