En esta página

QCalendar Class

La clase QCalendar describe sistemas de calendario. Más...

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

Nota: Todas las funciones de esta clase son reentrantes.

Tipos Públicos

(since 6.2) class SystemId
enum class System { Gregorian, Julian, Milankovic, Jalali, IslamicCivil }

Funciones Públicas

QCalendar()
QCalendar(QAnyStringView name)
QCalendar(QCalendar::System system)
(since 6.2) QCalendar(QCalendar::SystemId id)
QDate dateFromParts(const QCalendar::YearMonthDay &parts) const
QDate dateFromParts(int year, int month, int day) const
QString dateTimeToString(QStringView format, const QDateTime &datetime, QDate dateOnly, QTime timeOnly, const QLocale &locale) const
int dayOfWeek(QDate date) const
int daysInMonth(int month, int year = Unspecified) const
int daysInYear(int year) const
bool hasYearZero() const
bool isDateValid(int year, int month, int day) const
bool isGregorian() const
bool isLeapYear(int year) const
bool isLunar() const
bool isLuniSolar() const
bool isProleptic() const
bool isSolar() const
bool isValid() const
(since 6.7) QDate matchCenturyToWeekday(const QCalendar::YearMonthDay &parts, int dow) const
int maximumDaysInMonth() const
int maximumMonthsInYear() const
int minimumDaysInMonth() const
QString monthName(const QLocale &locale, int month, int year = Unspecified, QLocale::FormatType format = QLocale::LongFormat) const
int monthsInYear(int year) const
QString name() const
QCalendar::YearMonthDay partsFromDate(QDate date) const
QString standaloneMonthName(const QLocale &locale, int month, int year = Unspecified, QLocale::FormatType format = QLocale::LongFormat) const
QString standaloneWeekDayName(const QLocale &locale, int day, QLocale::FormatType format = QLocale::LongFormat) const
QString weekDayName(const QLocale &locale, int day, QLocale::FormatType format = QLocale::LongFormat) const

Miembros públicos estáticos

QStringList availableCalendars()

Descripción Detallada

Un objeto QCalendar mapea un año, mes y número de día a un día específico (identificado en última instancia por su número de día juliano), usando las reglas de un sistema particular.

El QCalendar() por defecto es un calendario gregoriano proléptico, que no tiene año cero. Otros calendarios pueden ser soportados habilitando las características adecuadas o cargando plugins. Los calendarios soportados como características pueden ser construidos pasando la enumeración QCalendar::System al constructor. Todos los calendarios soportados pueden ser construidos por nombre, una vez que han sido construidos. (Así, los plugins instancian su backend de calendario para registrarlo.) Los backends incorporados, accesibles a través de QCalendar::System, también están siempre disponibles por nombre. Los calendarios que usan backends personalizados también pueden construirse usando un ID único asignado al backend en la construcción.

Un valor QCalendar es inmutable.

Véase también QDate y QDateTime.

Documentación de tipos de miembros

enum class QCalendar::System

Este tipo enumerado se utiliza para especificar una elección de sistema de calendario.

ConstanteValorDescripción
QCalendar::System::Gregorian0El calendario por defecto, utilizado internacionalmente.
QCalendar::System::Julian8Un antiguo calendario romano.
QCalendar::System::Milankovic9Calendario juliano revisado, utilizado por algunas iglesias ortodoxas.
QCalendar::System::Jalali10El calendario Solar Hijri (también llamado Persa).
QCalendar::System::IslamicCivil11El calendario civil islámico (tabular).

Véase también QCalendar y QCalendar::SystemId.

Documentación de las funciones miembro

[explicit] QCalendar::QCalendar()

[explicit] QCalendar::QCalendar(QCalendar::System system)

[explicit] QCalendar::QCalendar(QAnyStringView name)

Construye un objeto calendario.

La elección del calendario a utilizar puede indicarse mediante system, utilizando la enumeración QCalendar::System, o mediante name, utilizando una cadena (Unicode o Latin 1). La construcción por nombre puede depender de que primero se construya una instancia del calendario dado por otros medios. Sin argumento, el constructor por defecto devuelve el calendario gregoriano.

Nota: En versiones de Qt anteriores a la 6.4, el constructor por name sólo aceptaba QStringView y QLatin1String, no QAnyStringView.

Véase también QCalendar, System, y isValid().

[explicit, since 6.2] QCalendar::QCalendar(QCalendar::SystemId id)

Construye un objeto calendario.

Cuando se usa una implementación de calendario personalizada, se le asigna un ID único a su backend cuando se crea; si se pasa como id a este constructor se obtendrá un QCalendar usando ese backend. Esto puede ser útil cuando el backend no está registrado por nombre.

Esta es una función sobrecargada.

Esta función se introdujo en Qt 6.2.

[static] QStringList QCalendar::availableCalendars()

Devuelve una lista de nombres de los sistemas de calendario disponibles.

Estos pueden ser proporcionados por plugins u otro código vinculado a una aplicación, además de los proporcionados por Qt, algunos de los cuales son controlados por funciones.

QDate QCalendar::dateFromParts(int year, int month, int day) const

QDate QCalendar::dateFromParts(const QCalendar::YearMonthDay &parts) const

Convierte un año, un mes y un día en QDate.

year, month, y day pueden pasarse como números separados o empaquetados juntos como los miembros de parts. Devuelve un QDate con el año, mes y día del mes dados en este calendario, si existe. En caso contrario, incluyendo el caso en que alguno de los valores sea QCalendar::Unspecified, devuelve un QDate cuyo isNull() sea verdadero.

Véase también isDateValid() y partsFromDate().

QString QCalendar::dateTimeToString(QStringView format, const QDateTime &datetime, QDate dateOnly, QTime timeOnly, const QLocale &locale) const

Devuelve una cadena que representa una fecha, hora o fecha-hora dada.

Si datetime es válido, se representa y se reconocen los especificadores de formato de los campos de fecha y hora; en caso contrario, si dateOnly es válido, se representa y sólo se reconocen los especificadores de formato de los campos de fecha; por último, si timeOnly es válido, se representa y sólo se reconocen los especificadores de formato de los campos de hora. Si ninguno de ellos es válido, se devuelve una cadena vacía.

Consulte QDate::toString y QTime::toString() para conocer los especificadores de campo admitidos. Los caracteres de format que se reconocen como especificadores de campo se sustituyen por texto que representa los datos apropiados de la fecha y/o la hora que se está representando. Los textos que los representan pueden depender del locale especificado. Los demás caracteres de format se copian textualmente en la cadena devuelta.

Véase también monthName(), weekDayName(), QDate::toString() y QTime::toString().

int QCalendar::dayOfWeek(QDate date) const

Devuelve el número del día de la semana para la fecha indicada date.

Devuelve cero si el calendario no puede representar la fecha indicada. Devuelve del 1 para el lunes al 7 para el domingo. Los calendarios con días intercalares pueden utilizar otros números para representarlos.

Véase también partsFromDate() y Qt::DayOfWeek.

int QCalendar::daysInMonth(int month, int year = Unspecified) const

Devuelve el número de días en el month dado del year dado .

Los meses se numeran consecutivamente, empezando por 1 para el primer mes de cada año. Si year es Unspecified (su valor por defecto, si no se pasa), se devuelve la mayor duración del mes en cualquier año.

Véase también maximumDaysInMonth() y minimumDaysInMonth().

int QCalendar::daysInYear(int year) const

Devuelve el número de días en el year dado.

El tratamiento de Unspecified como year no está definido.

bool QCalendar::hasYearZero() const

Devuelve true si este calendario tiene un año cero.

Un calendario puede representar los años a partir de su primer año, pero no proporcionar ninguna forma de describir los años anteriores al primero; un calendario de este tipo no tiene año cero y no es proléptico.

Un calendario que represente los años anteriores al primero puede numerar estos años simplemente siguiendo el cómputo de números enteros habitual, de forma que el año anterior al primero sea el año cero, precedido de años con números negativos; un calendario de este tipo es proléptico y tiene un año cero. Un calendario también puede tener un año cero (por ejemplo, el año de algún gran acontecimiento, siendo los años siguientes el primer año después de ese acontecimiento, el segundo año después, etc.) sin describir los años anteriores a su año cero. Un calendario de este tipo tendría un año cero sin ser proléptico.

Algunos calendarios, sin embargo, representan los años anteriores al primero mediante una numeración alternativa; por ejemplo, el primer año del calendario gregoriano proléptico es el 1 EC y el año anterior es el 1 BCE, precedido por el 2 BCE y así sucesivamente. En este caso, utilizamos números de año negativos para esta numeración alternativa, con el año -1 como el año anterior al año 1, el año -2 como el año anterior al año -1 y así sucesivamente. Este calendario es proléptico, pero no tiene año cero.

Véase también isProleptic().

bool QCalendar::isDateValid(int year, int month, int day) const

Devuelve true precisamente si los datos year, month, y day especifican una fecha válida en este calendario.

Normalmente esto significa 1 <= mes <= monthsInYear(año) y 1 <= día <= daysInMonth(mes, año). Sin embargo, los calendarios con días o meses intercalares pueden complicarlo.

bool QCalendar::isGregorian() const

Devuelve true si este objeto calendario es el objeto calendario gregoriano utilizado como calendario por defecto por otras APIs de Qt, por ejemplo en QDate.

bool QCalendar::isLeapYear(int year) const

Devuelve true si el year dado es un año bisiesto.

Dado que el año no tiene un número entero de días, algunos años son más largos que otros. La diferencia puede ser de un mes entero o de un solo día; los detalles varían de un calendario a otro.

Véase también isDateValid().

bool QCalendar::isLunar() const

Devuelve true si este calendario es un calendario lunar.

Un calendario lunar es aquel que se basa principalmente en las fases de la luna.

bool QCalendar::isLuniSolar() const

Devuelve true si este calendario es lunisolar.

Un calendario lunisolar expresa las fases de la luna, pero se adapta para tener en cuenta también la posición variable del Sol en el cielo, en relación con las estrellas fijas.

bool QCalendar::isProleptic() const

Devuelve true si este calendario es proléptico.

Un calendario proléptico es capaz de describir años arbitrariamente muy anteriores al primero. Éstos se representan por números de año negativos y posiblemente por un año cero.

Véase también hasYearZero().

bool QCalendar::isSolar() const

Devuelve true si este calendario es solar.

Un calendario solar se basa principalmente en la posición variable del Sol en el cielo, en relación con las estrellas fijas.

bool QCalendar::isValid() const

Devuelve true si se trata de un objeto calendario válido.

Construir un calendario con un nombre de calendario no reconocido puede resultar en un objeto inválido. Utilice este método para comprobarlo después de crear un calendario por nombre.

[since 6.7] QDate QCalendar::matchCenturyToWeekday(const QCalendar::YearMonthDay &parts, int dow) const

Ajusta el siglo de una fecha para que coincida con un día de la semana dado.

Se utiliza cuando se indican el día de la semana, el día del mes, el mes y los dos últimos dígitos del año de una fecha. Devuelve una instancia de QDate con el dow dado como su dayOfWeek(), que coincide con el parts dado en mes y día del mes. El year() de QDate devuelto diferirá de parts.year en un múltiplo de 100, prefiriendo los múltiplos pequeños a los grandes y los múltiplos positivos a sus negaciones.

Si ninguna fecha cumple estas condiciones, se devuelve un QDate inválido: el día de la semana es incompatible con los demás datos facilitados. Esto ocurre, por ejemplo, con el calendario gregoriano, cuyo ciclo de 400 años tiene un número entero de semanas, por lo que cualquier mes y día de ese mes sólo cae, en años con dos últimos dígitos determinados, en cuatro días de la semana. (En el caso especial del 29 de febrero en el cambio de siglo, cuando se trata de un año bisiesto, sólo es posible un día de la semana: martes).

Esta función se introdujo en Qt 6.7.

int QCalendar::maximumDaysInMonth() const

Devuelve el número de días del mes más largo del calendario, en cualquier año.

Véase también daysInMonth() y minimumDaysInMonth().

int QCalendar::maximumMonthsInYear() const

Devuelve el mayor número de meses que puede contener cualquier año.

Véase también monthName(), standaloneMonthName() y monthsInYear().

int QCalendar::minimumDaysInMonth() const

Devuelve el número de días del mes más corto del calendario, en cualquier año.

Véase también daysInMonth() y maximumDaysInMonth().

QString QCalendar::monthName(const QLocale &locale, int month, int year = Unspecified, QLocale::FormatType format = QLocale::LongFormat) const

Devuelve un nombre convenientemente localizado para un mes.

El mes se indica mediante un número, con month = 1 que significa el primer mes del año y los meses siguientes numerados en consecuencia. Devuelve una cadena vacía si no se reconoce el número month.

year puede ser No especificado, en cuyo caso debe utilizarse la correspondencia de números a nombres para los meses de un año típico. Algunos calendarios tienen meses bisiestos que no siempre están al final del año; su asignación de números de mes a nombres puede entonces depender de la colocación de un mes bisiesto. Por lo tanto, normalmente se debe especificar el año, si se conoce.

El nombre se devuelve en la forma que se utilizaría normalmente en una fecha completa, en el locale especificado; el format determina cómo de completa debe expresarse (es decir, hasta qué punto se abrevia).

Véase también standaloneMonthName(), maximumMonthsInYear() y dateTimeToString().

int QCalendar::monthsInYear(int year) const

Devuelve el número de meses en el year dado .

Si year es Unspecified, devuelve el número máximo de meses de un año.

Véase también maximumMonthsInYear().

QString QCalendar::name() const

El nombre principal de este calendario.

El calendario también puede ser conocido por algunos alias. Un calendario instanciado por nombre puede utilizar un alias de este tipo, en cuyo caso su name() no tiene por qué coincidir con el alias por el que fue instanciado.

QCalendar::YearMonthDay QCalendar::partsFromDate(QDate date) const

Convierte un QDate en un año, mes y día del mes.

La estructura devuelta isValid() será falsa si el calendario no puede representar el date dado. En caso contrario, sus miembros año, mes y día registrarán las partes así denominadas de su representación.

Véase también dateFromParts(), isProleptic() y hasYearZero().

QString QCalendar::standaloneMonthName(const QLocale &locale, int month, int year = Unspecified, QLocale::FormatType format = QLocale::LongFormat) const

Devuelve un nombre independiente convenientemente localizado para un mes.

El mes se indica mediante un número, con month = 1 que significa el primer mes del año y los meses siguientes numerados en consecuencia. Devuelve una cadena vacía si no se reconoce el número month.

year puede ser No especificado, en cuyo caso debe utilizarse la correspondencia de números a nombres para los meses de un año típico. Algunos calendarios tienen meses bisiestos que no siempre están al final del año; su asignación de números de mes a nombres puede entonces depender de la colocación de un mes bisiesto. Por lo tanto, normalmente se debe especificar el año, si se conoce.

El nombre se devuelve en la forma que se utilizaría de forma aislada en el locale especificado; el format determina hasta qué punto se expresará de forma completa (es decir, hasta qué punto se abreviará).

Véase también monthName(), maximumMonthsInYear() y dateTimeToString().

QString QCalendar::standaloneWeekDayName(const QLocale &locale, int day, QLocale::FormatType format = QLocale::LongFormat) const

Devuelve un nombre independiente convenientemente localizado para un día de la semana.

Los días de la semana se numeran del 1 para el lunes al 7 para el domingo. Algunos calendarios pueden admitir números más altos para otros días (por ejemplo, los días intercalares, que no forman parte de ninguna semana). Devuelve una cadena vacía si no se reconoce el número day.

El nombre se devuelve en la forma en que se utilizaría de forma aislada (por ejemplo, como encabezamiento de columna en la visualización tabular de un calendario de un mes con semanas sucesivas como filas) en el locale especificado; el format determina cómo de completo se expresará (es decir, hasta qué punto se abrevia).

Véase también weekDayName() y dayOfWeek().

QString QCalendar::weekDayName(const QLocale &locale, int day, QLocale::FormatType format = QLocale::LongFormat) const

Devuelve un nombre convenientemente localizado para un día de la semana.

Los días de la semana se numeran del 1 para el lunes al 7 para el domingo. Algunos calendarios pueden admitir números superiores para otros días (por ejemplo, los días intercalares, que no forman parte de ninguna semana). Devuelve una cadena vacía si no se reconoce el número day.

El nombre se devuelve en la forma que se utilizaría normalmente en una fecha completa, en el locale especificado; el format determina cómo de completa se expresará (es decir, hasta qué punto se abrevia).

Véase también standaloneWeekDayName() y dayOfWeek().

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