QDate Class
La classe QDate fournit des fonctions de date. Plus d'informations...
| En-tête : | #include <QDate> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
Cette classe est fortement comparable.
Cette classe est fortement comparable à std::chrono::year_month_day, std::chrono::year_month_day_last, std::chrono::year_month_weekday, et std::chrono::year_month_weekday_last.
Ces opérateurs de comparaison ne sont disponibles qu'en C++20.
Remarque : toutes les fonctions de cette classe sont réentrantes.
Fonctions publiques
| 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 |
Membres publics statiques
| 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) |
Non-membres associés
| 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) |
Description détaillée
Un objet QDate représente un jour particulier, indépendamment du calendrier, de la locale ou d'autres paramètres utilisés lors de sa création ou fournis par le système. Il peut indiquer l'année, le mois et le jour du mois qui représentent le jour par rapport au calendrier grégorien proleptique ou à tout autre calendrier fourni sous la forme d'un objet QCalendar. Les objets QDate doivent être transmis par valeur plutôt que par référence à const ; ils emballent simplement qint64.
Un objet QDate est généralement créé en indiquant explicitement les numéros de l'année, du mois et du jour. Notez que QDate interprète les numéros d'année inférieurs à 100 comme présentés, c'est-à-dire comme les années 1 à 99, sans ajouter de décalage. La fonction statique currentDate() crée un objet QDate contenant la date lue à partir de l'horloge du système. Une date explicite peut également être définie à l'aide de la fonction setDate(). La fonction fromString() renvoie une QDate à partir d'une chaîne de caractères et d'un format de date utilisé pour interpréter la date contenue dans la chaîne.
Les fonctions year(), month() et day() permettent d'accéder aux numéros de l'année, du mois et du jour. Lorsque plusieurs de ces valeurs sont nécessaires, il est plus efficace d'appeler QCalendar::partsFromDate(), afin d'éviter de répéter des calculs calendaires (potentiellement coûteux).
Les fonctions dayOfWeek() et dayOfYear() sont également fournies. Les mêmes informations sont fournies sous forme de texte par toString(). QLocale peut associer les numéros de jour à des noms, QCalendar peut associer les numéros de mois à des noms.
QDate fournit un ensemble complet d'opérateurs pour comparer deux objets QDate, où plus petit signifie plus tôt, et plus grand signifie plus tard.
Vous pouvez incrémenter (ou décrémenter) une date d'un nombre donné de jours en utilisant addDays(). De même, vous pouvez utiliser addMonths() et addYears(). La fonction daysTo() renvoie le nombre de jours entre deux dates.
Les fonctions daysInMonth() et daysInYear() renvoient le nombre de jours du mois et de l'année de cette date, respectivement. La fonction isLeapYear() indique si une date se situe dans une année bissextile. QCalendar peut également fournir cette information, dans certains cas de manière plus pratique.
Remarques
Note : Toutes les conversions vers et depuis les formats de chaînes de caractères sont effectuées en utilisant la locale C. Pour les conversions locales, voir QLocale.
Dans le calendrier grégorien, il n'y a pas d'année 0. Les dates de cette année sont considérées comme invalides. L'année -1 est l'année "1 avant le Christ" ou "1 avant l'ère commune". Le jour précédant le 1er janvier de l'ère chrétienne, QDate(1, 1, 1), est le 31 décembre de l'ère chrétienne, QDate(-1, 12, 31). D'autres calendriers se comportent de la même manière ; voir QCalendar::hasYearZero().
Plage de dates valides
Les dates sont stockées en interne sous la forme d'un nombre modifié de jours juliens, un nombre entier de jours dans une plage contiguë, le 24 novembre 4714 avant notre ère dans le calendrier grégorien étant le jour julien 0 (1er janvier 4713 avant notre ère dans le calendrier julien). En plus d'être un moyen efficace et précis de stocker une date absolue, il permet de convertir une date dans d'autres systèmes calendaires tels que l'hébreu, l'islamique ou le chinois. Dans le cadre de QDate, les jours juliens sont délimités à minuit et, pour ceux de QDateTime, dans la zone utilisée par la date. (Ceci diffère de la définition formelle, qui délimite les jours juliens à midi UTC). Le numéro du jour julien peut être obtenu à l'aide de QDate::toJulianDay() et peut être défini à l'aide de QDate::fromJulianDay().
Pour des raisons techniques, la plage de numéros de jours juliens que QDate peut représenter est limitée à la période comprise entre -784350574879 et 784354017364, c'est-à-dire entre avant 2 milliards d'années avant notre ère et après 2 milliards d'années après notre ère. Cette plage est plus de sept fois supérieure à la plage de dates qu'un site QDateTime peut représenter.
Voir aussi QTime, QDateTime, QCalendar, QDateTime::YearRange, QDateEdit, QDateTimeEdit, et QCalendarWidget.
Documentation sur les fonctions des membres
[constexpr] QDate::QDate()
Construit une date nulle. Les dates nulles sont invalides.
Voir aussi isNull() et 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)
Construit un QDate représentant la même date que date. Cela facilite l'interopérabilité entre les classes de calendrier de la bibliothèque standard et les classes de datetime de Qt.
Par exemple :
// 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];
Note : Contrairement à QDate, std::chrono::year et les classes associées comportent l'année zéro. Cela signifie que si date est dans l'année zéro ou avant, l'objet QDate résultant aura une année inférieure à celle spécifiée par date.
Note : Cette fonction nécessite C++20.
Ces fonctions ont été introduites dans Qt 6.4.
QDate::QDate(int y, int m, int d)
Construit une date avec l'année y, le mois m et le jour d.
La date est comprise dans le calendrier grégorien. Si la date spécifiée n'est pas valide, la date n'est pas définie et isValid() renvoie false.
Attention : Les années 1 à 99 sont interprétées telles quelles. L'année 0 n'est pas valide.
Voir aussi isValid() et QCalendar::dateFromParts().
QDate QDate::addDays(qint64 ndays) const
Renvoie un objet QDate contenant une date ndays postérieure à la date de cet objet (ou antérieure si ndays est négatif).
Renvoie une date nulle si la date actuelle n'est pas valide ou si la nouvelle date est hors limites.
Voir aussi addMonths(), addYears(), et daysTo().
[since 6.4] QDate QDate::addDuration(std::chrono::days ndays) const
Renvoie un objet QDate contenant une date ndays postérieure à la date de cet objet (ou antérieure si ndays est négatif).
Renvoie une date nulle si la date actuelle n'est pas valide ou si la nouvelle date est hors limites.
Note : L 'addition de durées exprimées en std::chrono::months ou std::chrono::years ne donne pas le même résultat que celui obtenu en utilisant addMonths() ou addYears(). Les premières sont des durées fixes, calculées par rapport à l'année solaire ; les secondes utilisent les définitions des mois/années du calendrier grégorien.
Note : Cette fonction nécessite C++20.
Cette fonction a été introduite dans Qt 6.4.
Voir aussi addMonths(), addYears(), et daysTo().
QDate QDate::addMonths(int nmonths, QCalendar cal) const
Renvoie un objet QDate contenant une date nmonths postérieure à la date de cet objet (ou antérieure si nmonths est négatif).
Utilise cal comme calendrier, s'il est fourni, sinon le calendrier grégorien.
Remarque : si la combinaison jour/mois de fin n'existe pas dans le mois/année résultant, cette fonction renvoie une date qui est la dernière date valide dans le mois sélectionné.
Voir aussi addDays() et addYears().
QDate QDate::addMonths(int nmonths) const
Cette fonction surcharge QDate::addMonths().
QDate QDate::addYears(int nyears, QCalendar cal) const
Renvoie un objet QDate contenant une date nyears postérieure à la date de cet objet (ou antérieure si nyears est négatif).
Utilise cal comme calendrier, s'il est fourni, sinon le calendrier grégorien.
Note : Si la combinaison jour/mois de fin n'existe pas dans l'année résultante (par exemple, pour le calendrier grégorien, si la date était le 29 février et que l'année finale n'est pas une année bissextile), cette fonction renverra une date qui est la dernière date valide dans le mois donné (dans l'exemple, le 28 février).
Voir aussi addDays() et addMonths().
QDate QDate::addYears(int nyears) const
Cette fonction surcharge QDate::addYears().
[static] QDate QDate::currentDate()
Renvoie la date actuelle de l'horloge système.
Voir aussi QTime::currentTime() et QDateTime::currentDateTime().
int QDate::day(QCalendar cal) const
Renvoie le jour du mois pour cette date.
Utilise cal comme calendrier s'il est fourni, sinon le calendrier grégorien (pour lequel la valeur retournée va de 1 à 31). Retourne 0 si la date n'est pas valide.
Voir aussi year(), month(), dayOfWeek() et QCalendar::partsFromDate().
int QDate::day() const
Cette fonction surcharge QDate::day().
int QDate::dayOfWeek(QCalendar cal) const
Renvoie le jour de la semaine (1 = lundi à 7 = dimanche) pour cette date.
Utilise cal comme calendrier s'il est fourni, sinon le calendrier grégorien. Renvoie 0 si la date n'est pas valide. Certains calendriers peuvent donner une signification particulière (par exemple, jours intercallaires) aux valeurs supérieures à 7.
Voir aussi day(), dayOfYear(), QCalendar::dayOfWeek(), et Qt::DayOfWeek.
int QDate::dayOfWeek() const
Cette fonction surcharge QDate::dayOfWeek().
int QDate::dayOfYear(QCalendar cal) const
Renvoie le jour de l'année (1 pour le premier jour) pour cette date.
Utilise cal comme calendrier s'il est fourni, sinon le calendrier grégorien. Renvoie 0 si la date ou le premier jour de l'année n'est pas valide.
Voir aussi day(), dayOfWeek(), et QCalendar::daysInYear().
int QDate::dayOfYear() const
Cette fonction surcharge QDate::dayOfYear().
int QDate::daysInMonth(QCalendar cal) const
Renvoie le nombre de jours du mois pour cette date.
Utilise cal comme calendrier s'il est fourni, sinon le calendrier grégorien (pour lequel le résultat est compris entre 28 et 31). Renvoie 0 si la date n'est pas valide.
Voir aussi day(), daysInYear(), QCalendar::daysInMonth(), QCalendar::maximumDaysInMonth() et QCalendar::minimumDaysInMonth().
int QDate::daysInMonth() const
Cette fonction surcharge QDate::daysInMonth().
int QDate::daysInYear(QCalendar cal) const
Renvoie le nombre de jours de l'année pour cette date.
Utilise cal comme calendrier s'il est fourni, sinon le calendrier grégorien (pour lequel le résultat est 365 ou 366). Renvoie 0 si la date n'est pas valide.
Voir aussi day(), daysInMonth(), QCalendar::daysInYear(), et QCalendar::maximumMonthsInYear().
int QDate::daysInYear() const
Cette fonction surcharge QDate::daysInYear().
qint64 QDate::daysTo(QDate d) const
Renvoie le nombre de jours entre cette date et d (qui est négatif si d est antérieur à cette date).
Renvoie 0 si l'une ou l'autre des dates n'est pas valide.
Exemple :
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
Voir aussi addDays().
QDateTime QDate::endOfDay(const QTimeZone &zone) const
Renvoie le moment de la fin de la journée.
L'heure de fin d'une journée dépend de la manière dont le temps est décrit : chaque journée commence et se termine plus tôt pour les fuseaux horaires situés plus à l'ouest et plus tard pour ceux situés plus à l'est. La représentation du temps à utiliser peut être spécifiée par une option de temps zone. La représentation du temps par défaut est l'heure locale du système.
En général, la fin de la journée se situe une milliseconde avant minuit, 24:00 : cependant, si une transition de fuseau horaire fait sauter ce moment à la date donnée (par exemple, une avance de l'heure d'été sautant 23:00 et l'heure suivante), l'heure réelle la plus tardive de la journée est renvoyée. Cela ne peut se produire que lorsque la représentation du temps est un fuseau horaire ou l'heure locale.
Lorsque zone a une timeSpec() de Qt::OffsetFromUTC ou Qt::UTC, la représentation du temps n'a pas de transitions, de sorte que la fin de la journée est QTime(23, 59, 59, 999).
Dans le cas rare d'une date entièrement ignorée (cela se produit lorsqu'une zone située à l'est de la ligne internationale de changement de date passe à l'ouest de celle-ci), le retour est invalide. Passer un fuseau horaire invalide à zone produira également un résultat invalide, tout comme les dates qui se terminent en dehors de l'intervalle représentable par QDateTime.
Voir aussi startOfDay().
[since 6.5] QDateTime QDate::endOfDay() const
Cette fonction surcharge QDate::endOfDay().
Cette fonction a été introduite dans Qt 6.5.
[static constexpr] QDate QDate::fromJulianDay(qint64 jd)
Convertit le jour julien jd en QDate.
Voir aussi toJulianDay().
[static constexpr noexcept, since 6.4] QDate QDate::fromStdSysDays(const std::chrono::sys_days &days)
Renvoie une date QDate days jours après le 1er janvier 1970 (l'époque UNIX). Si days est négatif, la date retournée sera antérieure à l'époque.
Note : Cette fonction nécessite C++20.
Cette fonction a été introduite dans Qt 6.4.
Voir aussi toStdSysDays().
[static] QDate QDate::fromString(const QString &string, const QString &format, int baseYear, QCalendar cal)
Renvoie l'adresse QDate représentée par l'adresse string, en utilisant l'adresse format fournie, ou une date invalide si la chaîne ne peut pas être analysée.
Utilise cal comme calendrier s'il est fourni, sinon le calendrier grégorien. Les plages de valeurs dans les descriptions de format ci-dessous correspondent à ce dernier ; elles peuvent être différentes pour d'autres calendriers.
Ces expressions peuvent être utilisées pour le format :
| Expression | Sortie |
|---|---|
| d | Le jour sous la forme d'un nombre sans zéro initial (1 à 31) |
| dd | Le jour sous forme de nombre avec un zéro en tête (01 à 31) |
| ddd | Le nom abrégé du jour ('Mon' à 'Sun'). |
| dddd | Le nom long du jour ('Lundi' à 'Dimanche'). |
| M | Le mois sous la forme d'un nombre sans zéro initial (1 à 12) |
| MM | Le mois sous forme de nombre avec un zéro en tête (01 à 12) |
| MMM | Le nom abrégé du mois ('Jan' à 'Dec'). |
| MMMM | Le nom long du mois ('janvier' à 'décembre'). |
| aa | L'année sous la forme d'un nombre à deux chiffres (00 à 99) |
| yyyy | L'année sous la forme d'un nombre à quatre chiffres, éventuellement précédé d'un signe moins pour les années négatives. |
Remarque : les noms des jours et des mois doivent être indiqués en anglais (locale C). Si des noms de jour et de mois localisés doivent être reconnus, utilisez QLocale::system().toDate().
Tous les autres caractères d'entrée seront traités comme du texte. Toute séquence non vide de caractères entre guillemets simples sera également traitée (sans les guillemets) comme du texte et ne sera pas interprétée comme une expression. Par exemple, si le format n'est pas respecté, un message d'avertissement est envoyé à l'utilisateur :
Si le format n'est pas respecté, une adresse QDate invalide est renvoyée. Les expressions qui n'attendent pas de zéros en tête (d, M) seront gourmandes. Cela signifie qu'elles utiliseront deux chiffres même si cela les place en dehors de la plage de valeurs acceptée et laisse trop peu de chiffres pour les autres sections. Par exemple, la chaîne de format suivante aurait pu signifier 30 janvier, mais le M s'empare de deux chiffres, ce qui donne une date non valide :
Pour tout champ qui n'est pas représenté dans le format, les valeurs par défaut suivantes sont utilisées :
| Champ | Valeur par défaut |
|---|---|
| Année | baseYear (ou 1900) |
| Mois | 1 (janvier) |
| Jour | 1 |
Lorsque format ne spécifie que les deux derniers chiffres d'une année, les 100 années commençant à baseYear sont les premières candidates prises en compte. Avant la version 6.7, il n'y avait pas de paramètre baseYear et 1900 était toujours utilisé. C'est la valeur par défaut de baseYear, qui sélectionne une année entre cette date et 1999. Le fait de passer 1976 comme paramètre baseYear sélectionnera une année allant de 1976 à 2075, par exemple. Lorsque le format comprend également le mois, le jour (du mois) et le jour de la semaine, ceux-ci suffisent à indiquer le siècle. Dans ce cas, une date correspondante est sélectionnée dans le siècle le plus proche de celui indiqué par baseYear, en préférant le plus récent au plus ancien. Voir QCalendar::matchCenturyToWeekday() et Date ambiguities pour plus de détails,
Les exemples suivants illustrent les valeurs par défaut :
QDate::fromString("1.30", "M.d"); // January 30 1900 QDate::fromString("20000110", "yyyyMMdd"); // January 10, 2000 QDate::fromString("20000110", "yyyyMd"); // January 10, 2000
Note : Si un caractère de format est répété plus de fois que l'expression la plus longue du tableau ci-dessus qui l'utilise, cette partie du format sera lue comme plusieurs expressions sans séparateur entre elles ; la plus longue ci-dessus, éventuellement répétée autant de fois qu'il y a de copies, se terminant par un résidu qui peut être une expression plus courte. Ainsi, 'MMMMMMMMMM' correspondrait à "MayMay05" et fixerait le mois à mai. De même, 'MMMMMM' correspondrait à "May08" et le trouverait incohérent, ce qui conduirait à une date invalide.
Ambiguïtés des dates
Des cultures différentes utilisent des formats différents pour les dates et, par conséquent, les utilisateurs peuvent confondre l'ordre dans lequel les champs de date doivent être renseignés. Par exemple, "Wed 28-Nov-01" peut signifier soit 2028 le 1er novembre, soit le 28 novembre 2001 (qui se trouve être un mercredi). En utilisant le format "ddd yy-MMM-dd", il sera interprété dans le premier sens, et en utilisant "ddd dd-MMM-yy" dans le second. Cependant, la signification de l'utilisateur peut dépendre de la manière dont il écrit normalement les dates, plutôt que du format attendu par le code.
L'exemple ci-dessus mélangeait le jour du mois et une année à deux chiffres. Une confusion similaire peut survenir en intervertissant le mois et le jour du mois, lorsque les deux sont donnés sous forme de nombres. Dans ces cas, l'inclusion d'un champ "jour de la semaine" dans le format de la date peut fournir une certaine redondance, qui peut aider à détecter des erreurs de ce type. Cependant, comme dans l'exemple ci-dessus, cela n'est pas toujours efficace : l'échange de deux champs (ou de leur signification) peut produire des dates avec le même jour de la semaine.
L'inclusion d'un jour de la semaine dans le format peut également résoudre le problème du siècle d'une date spécifiée en utilisant uniquement les deux derniers chiffres de son année. Malheureusement, lorsqu'elle est combinée à une date pour laquelle l'utilisateur (ou une autre source de données) a mélangé deux des champs, cette résolution peut conduire à trouver une date qui correspond à la lecture du format mais qui n'est pas celle voulue par son auteur. De même, si l'utilisateur se trompe simplement sur le jour de la semaine dans une date par ailleurs correcte, cela peut conduire à une date située dans un siècle différent. Dans chaque cas, le fait de trouver une date dans un siècle différent peut transformer une date saisie à tort en une date très différente.
La meilleure façon d'éviter les ambiguïtés de date est d'utiliser des années et des mois à quatre chiffres spécifiés par leur nom (complet ou abrégé), idéalement collectés via des interfaces utilisateur qui indiquent clairement à l'utilisateur la partie de la date qu'il sélectionne. L'inclusion d'un jour de la semaine peut également être utile en permettant de vérifier la cohérence des données. Lorsque les données proviennent de l'utilisateur, en utilisant un format fourni par une locale sélectionnée par l'utilisateur, il est préférable d'utiliser un format long, car les formats courts sont plus susceptibles d'utiliser des années à deux chiffres. Bien entendu, il n'est pas toujours possible de contrôler le format - les données peuvent provenir d'une source que vous ne contrôlez pas, par exemple.
En raison de ces sources de confusion possibles, en particulier lorsque vous ne pouvez pas être sûr qu'un format sans ambiguïté est utilisé, il est important de vérifier que le résultat de la lecture d'une chaîne en tant que date n'est pas seulement valide, mais raisonnable pour l'objectif pour lequel elle a été fournie. Si le résultat se situe en dehors d'une plage de valeurs raisonnables, il peut être utile de demander à l'utilisateur de confirmer sa sélection de date, en affichant la date lue à partir de la chaîne dans un format long qui inclut le nom du mois et l'année à quatre chiffres, afin qu'il puisse reconnaître plus facilement les erreurs éventuelles.
Voir aussi toString(), QDateTime::fromString(), QTime::fromString() et QLocale::toDate().
[static, since 6.0] QDate QDate::fromString(QStringView string, Qt::DateFormat format = Qt::TextDate)
Cette fonction surcharge QDate::fromString().
Cette fonction a été introduite dans Qt 6.0.
[static] QDate QDate::fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)
Retourne le QDate représenté par le string, en utilisant le format donné, ou une date invalide si la chaîne ne peut pas être analysée.
Note pour Qt::TextDate: seuls les noms de mois en anglais (par exemple "Jan" dans la forme courte ou "January" dans la forme longue) sont reconnus.
Il s'agit d'une fonction surchargée.
Voir aussi toString() et QLocale::toDate().
[static, since 6.0] QDate QDate::fromString(QStringView string, QStringView format, QCalendar cal)
Cette fonction surcharge QDate::fromString().
Cette fonction a été introduite dans Qt 6.0.
[static, since 6.7] QDate QDate::fromString(QStringView string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
Utilise une construction par défaut QCalendar.
Cette fonction surcharge QDate::fromString().
Cette fonction a été introduite dans Qt 6.7.
[static, since 6.0] QDate QDate::fromString(const QString &string, QStringView format, QCalendar cal)
Cette fonction surcharge QDate::fromString().
Cette fonction a été introduite dans Qt 6.0.
[static, since 6.7] QDate QDate::fromString(const QString &string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
Utilise une construction par défaut QCalendar.
Cette fonction surcharge QDate::fromString().
Cette fonction a été introduite dans Qt 6.7.
[static] QDate QDate::fromString(const QString &string, const QString &format, QCalendar cal)
Cette fonction surcharge QDate::fromString().
[static, since 6.7] QDate QDate::fromString(const QString &string, const QString &format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
Utilise une construction par défaut QCalendar.
Cette fonction surcharge QDate::fromString().
Cette fonction a été introduite dans Qt 6.7.
[static, since 6.7] QDate QDate::fromString(QStringView string, QStringView format, int baseYear, QCalendar cal)
Cette fonction surcharge QDate::fromString().
Cette fonction a été introduite dans Qt 6.7.
[static, since 6.0] QDate QDate::fromString(const QString &string, QStringView format, int baseYear, QCalendar cal)
Cette fonction surcharge QDate::fromString().
Cette fonction a été introduite dans Qt 6.0.
void QDate::getDate(int *year, int *month, int *day) const
Extrait l'année, le mois et le jour de la date et les affecte à *year, *month, et *day. Les pointeurs peuvent être nuls.
Retourne 0 si la date n'est pas valide.
Note : Dans les versions de Qt antérieures à 5.7, cette fonction est marquée comme nonconst.
Voir aussi year(), month(), day(), isValid() et QCalendar::partsFromDate().
[static] bool QDate::isLeapYear(int year)
Renvoie true si l'année year spécifiée est une année bissextile dans le calendrier grégorien ; sinon, renvoie false.
Voir aussi QCalendar::isLeapYear().
[constexpr] bool QDate::isNull() const
Renvoie true si la date est nulle, sinon renvoie false. Une date nulle est invalide.
Remarque : le comportement de cette fonction est équivalent à celui de isValid().
Voir aussi isValid().
[constexpr] bool QDate::isValid() const
Renvoie true si cette date est valide, sinon renvoie false.
Voir aussi isNull() et QCalendar::isDateValid().
[static] bool QDate::isValid(int year, int month, int day)
Renvoie true si la date spécifiée (year, month, et day) est valide dans le calendrier grégorien ; sinon, renvoie false.
Exemple :
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)
Cette fonction surcharge QDate::isValid().
Voir aussi isNull(), setDate() et QCalendar::isDateValid().
int QDate::month(QCalendar cal) const
Renvoie le numéro de mois de la date.
Numérote les mois de l'année en commençant par 1 pour le premier. Utilise cal comme calendrier s'il est fourni, sinon le calendrier grégorien, pour lequel la numérotation des mois est la suivante :
- 1 = "janvier"
- 2 = "février"
- 3 = "mars"
- 4 = "avril"
- 5 = "mai"
- 6 = "juin"
- 7 = "juillet
- 8 = "août
- 9 = "septembre
- 10 = "octobre
- 11 = "novembre
- 12 = "décembre"
Renvoie 0 si la date n'est pas valide. Notez que certains calendriers peuvent avoir plus de 12 mois certaines années.
Voir aussi year(), day(), et QCalendar::partsFromDate().
int QDate::month() const
Cette fonction surcharge QDate::month().
bool QDate::setDate(int year, int month, int day)
Définit ceci pour représenter la date, dans le calendrier grégorien, avec les numéros donnés year, month et day. Retourne true si la date résultante est valide, sinon il positionne this pour représenter une date invalide et retourne false.
Voir aussi isValid() et QCalendar::dateFromParts().
bool QDate::setDate(int year, int month, int day, QCalendar cal)
Définit ceci pour représenter la date, dans le calendrier donné cal, avec les numéros donnés year, month et day. Retourne true si la date résultante est valide, sinon il positionne this pour représenter une date invalide et retourne false.
Voir aussi isValid() et QCalendar::dateFromParts().
QDateTime QDate::startOfDay(const QTimeZone &zone) const
Renvoie le moment du début de la journée.
Le début d'une journée dépend de la manière dont le temps est décrit : chaque journée commence et se termine plus tôt pour les fuseaux horaires situés plus à l'ouest et plus tard pour ceux situés plus à l'est. La représentation du temps à utiliser peut être spécifiée par une option de temps zone. La représentation du temps par défaut est l'heure locale du système.
En général, le début de la journée est minuit, 00:00 : cependant, si une transition de fuseau horaire fait sauter la date donnée à minuit (par exemple, une avance de l'heure d'été sautant la première heure du jour), l'heure réelle la plus précoce de la journée est renvoyée. Cela ne peut se produire que lorsque la représentation du temps est un fuseau horaire ou l'heure locale.
Lorsque zone a une timeSpec() de is Qt::OffsetFromUTC ou Qt::UTC, la représentation du temps n'a pas de transitions et le début de la journée est donc QTime(0, 0).
Dans le cas rare où une date a été entièrement ignorée (cela se produit lorsqu'une zone située à l'est de la ligne internationale de changement de date passe à l'ouest de celle-ci), le retour est invalide. Passer un fuseau horaire invalide à zone produira également un résultat invalide, tout comme les dates qui commencent en dehors de l'intervalle représentable par QDateTime.
Voir aussi endOfDay().
[since 6.5] QDateTime QDate::startOfDay() const
Cette fonction surcharge QDate::startOfDay().
Cette fonction a été introduite dans Qt 6.5.
[constexpr] qint64 QDate::toJulianDay() const
Convertit la date en jour julien.
Voir aussi fromJulianDay().
[constexpr noexcept] std::chrono::sys_days QDate::toStdSysDays() const
Renvoie le nombre de jours entre le 1er janvier 1970 (l'époque UNIX) et cette date, représentée sous la forme d'un objet std::chrono::sys_days. Si cette date est antérieure à l'époque, le nombre de jours sera négatif.
Remarque : cette fonction nécessite C++20.
Voir aussi fromStdSysDays() et daysTo().
QString QDate::toString(const QString &format, QCalendar cal) const
QString QDate::toString(QStringView format, QCalendar cal) const
Renvoie la date sous forme de chaîne de caractères. Le paramètre format détermine le format de la chaîne de résultat. Si cal est fourni, il détermine le calendrier utilisé pour représenter la date ; par défaut, il s'agit du calendrier grégorien. Avant la version 5.14 de Qt XML, il n'y avait pas de paramètre cal et le calendrier grégorien était toujours utilisé.
Ces expressions peuvent être utilisées dans le paramètre format:
| Expression | Sortie |
|---|---|
| d | Le jour sous la forme d'un nombre sans zéro initial (1 à 31) |
| dd | Le jour sous forme de nombre avec un zéro en tête (01 à 31) |
| ddd | Le nom abrégé du jour ('Mon' à 'Sun'). |
| dddd | Le nom long du jour ('Lundi' à 'Dimanche'). |
| M | Le mois sous la forme d'un nombre sans zéro initial (1 à 12) |
| MM | Le mois sous forme de nombre avec un zéro en tête (01 à 12) |
| MMM | Le nom abrégé du mois ('Jan' à 'Dec'). |
| MMMM | Le nom long du mois ('janvier' à 'décembre'). |
| aa | L'année sous la forme d'un nombre à deux chiffres (00 à 99) |
| yyyy | L'année sous la forme d'un nombre à quatre chiffres. Si l'année est négative, un signe moins est ajouté, ce qui donne cinq caractères. |
Toute séquence de caractères entre guillemets simples sera incluse mot pour mot dans la chaîne de sortie (sans les guillemets), même si elle contient des caractères de formatage. Deux guillemets simples consécutifs ("'''") sont remplacés par un guillemet simple dans la sortie. Tous les autres caractères de la chaîne de format sont inclus tels quels dans la chaîne de sortie.
Les formats sans séparateur (par exemple "ddMM") sont supportés mais doivent être utilisés avec précaution, car les chaînes résultantes ne sont pas toujours lisibles de manière fiable (par exemple, si "dM" produit "212", cela peut signifier soit le 2 décembre, soit le 21 février).
Exemples de chaînes de format (en supposant que le site QDate est le 20 juillet 1969) :
| Format | Résultat |
|---|---|
| dd.MM.yyyy | 20.07.1969 |
| ddd MMMM d yy | Soleil 20 juillet 69 |
| Le jour est dddd | Le jour est dimanche |
Si la date n'est pas valide, une chaîne vide sera renvoyée.
Note : Les noms des jours et des mois sont donnés en anglais (locale C). Pour obtenir des noms de jour et de mois localisés, utilisez QLocale::system().toString().
Note : Si un caractère de format est répété plus de fois que l'expression la plus longue dans le tableau ci-dessus qui l'utilise, cette partie du format sera lue comme plusieurs expressions sans séparateur entre elles ; la plus longue ci-dessus, éventuellement répétée autant de fois qu'il y a de copies, se terminant par un résidu qui peut être une expression plus courte. Ainsi, 'MMMMMMMMMM' pour une date en mai contribuera à "MayMay05" à la sortie.
Voir aussi fromString(), QDateTime::toString(), QTime::toString(), et QLocale::toString().
QString QDate::toString(QStringView format) const
Cette fonction surcharge QDate::toString().
QString QDate::toString(Qt::DateFormat format = Qt::TextDate) const
Renvoie la date sous forme de chaîne de caractères. Le paramètre format détermine le format de la chaîne.
Si format est Qt::TextDate, la chaîne est formatée par défaut. Les noms du jour et du mois seront en anglais. Un exemple de ce formatage est "Sat May 20 1995". Pour un formatage localisé, voir QLocale::toString().
Si format est Qt::ISODate, le format de la chaîne correspond à la spécification ISO 8601 étendue pour les représentations de dates et d'heures, sous la forme aaaa-MM-dd, où aaaa est l'année, MM est le mois de l'année (entre 01 et 12), et dd est le jour du mois entre 01 et 31.
Si format est Qt::RFC2822Date, la chaîne est formatée d'une manière compatible avec la RFC 2822. Un exemple de ce formatage est "20 mai 1995".
Si la date n'est pas valide, une chaîne vide sera renvoyée.
Attention : Le format Qt::ISODate n'est valable que pour les années comprises entre 0 et 9999.
Cette fonction surcharge QDate::toString().
Voir aussi fromString() et QLocale::toString().
QString QDate::toString(const QString &format) const
Cette fonction surcharge QDate::toString().
int QDate::weekNumber(int *yearNumber = nullptr) const
Renvoie le numéro de semaine ISO 8601 (1 à 53).
Renvoie 0 si la date n'est pas valide. Sinon, il renvoie le numéro de semaine correspondant à la date. Si yearNumber n'est pas nullptr (sa valeur par défaut), l'année est enregistrée sous la forme *yearNumber.
Conformément à la norme ISO 8601, chaque semaine tombe dans l'année à laquelle appartiennent la plupart de ses jours, dans le calendrier grégorien. Comme la semaine ISO 8601 commence le lundi, c'est l'année dans laquelle tombe le jeudi de la semaine. La plupart des années ont 52 semaines, mais certaines en ont 53.
Note : *yearNumber n'est pas toujours identique à year(). Par exemple, le 1er janvier 2000 correspond à la semaine 52 de l'année 1999, et le 31 décembre 2002 à la semaine 1 de l'année 2003.
Voir également isValid().
int QDate::year(QCalendar cal) const
Renvoie l'année de cette date.
Utilise cal comme calendrier, s'il est fourni, sinon le calendrier grégorien.
Renvoie 0 si la date n'est pas valide. Pour certains calendriers, les dates antérieures à leur première année peuvent toutes être invalides.
Si vous utilisez un calendrier dont l'année est 0, vérifiez à l'aide de isValid() si le résultat est 0. Ces calendriers utilisent des nombres d'années négatifs de manière évidente, l'année 1 étant précédée de l'année 0, elle-même précédée de l'année -1, et ainsi de suite.
Certains calendriers, bien que n'ayant pas d'année 0, ont une numérotation conventionnelle des années avant leur première année, en comptant à rebours à partir de 1. Par exemple, dans le calendrier grégorien proleptique, les années successives avant 1 EC (la première année) sont identifiées comme 1 EC, 2 EC, 3 EC et ainsi de suite. Pour ces calendriers, des nombres d'années négatifs sont utilisés pour indiquer ces années avant l'année 1, -1 indiquant l'année avant 1.
Voir également month(), day(), QCalendar::hasYearZero(), QCalendar::isProleptic() et QCalendar::partsFromDate().
int QDate::year() const
Cette fonction surcharge QDate::year().
Non-membres apparentés
[constexpr noexcept] bool operator!=(const QDate &lhs, const QDate &rhs)
Renvoie true si lhs et rhs représentent des jours distincts ; sinon, renvoie false.
Voir aussi operator==().
[since 6.11] QDate &operator++(QDate &date)
L'opérateur préfixe ++ ajoute un jour à date et renvoie une référence à l'objet date modifié.
Cette fonction a été introduite dans Qt 6.11.
Voir aussi addDays() et operator--().
[since 6.11] QDate operator++(QDate &date, int)
L'opérateur postfixe ++ ajoute un jour à date et renvoie une copie de date avec la date précédente.
Cette fonction a été introduite dans Qt 6.11.
Voir aussi addDays() et operator--().
[since 6.11] QDate &operator--(QDate &date)
L'opérateur préfixe --, soustrait un jour de date et renvoie une référence à l'objet date modifié.
Cette fonction a été introduite dans Qt 6.11.
Voir aussi addDays() et operator++().
[since 6.11] QDate operator--(QDate &date, int)
L'opérateur postfixe -- soustrait un jour à date et renvoie une copie de date avec la date suivante.
Cette fonction a été introduite dans Qt 6.11.
Voir aussi addDays() et operator++().
[constexpr noexcept] bool operator<(const QDate &lhs, const QDate &rhs)
Renvoie true si lhs est antérieur à rhs; sinon renvoie false.
QDataStream &operator<<(QDataStream &out, QDate date)
Écrit l'adresse date dans le flux out.
Voir aussi Serializing Qt Data Types (Sérialisation des types de données Qt).
[constexpr noexcept] bool operator<=(const QDate &lhs, const QDate &rhs)
Renvoie true si lhs est antérieur ou égal à rhs; sinon renvoie false.
[constexpr noexcept] bool operator==(const QDate &lhs, const QDate &rhs)
Renvoie true si lhs et rhs représentent le même jour, sinon false.
[constexpr noexcept] bool operator>(const QDate &lhs, const QDate &rhs)
Renvoie true si lhs est postérieur à rhs; sinon renvoie false.
[constexpr noexcept] bool operator>=(const QDate &lhs, const QDate &rhs)
Renvoie true si lhs est postérieur ou égal à rhs; sinon renvoie false.
QDataStream &operator>>(QDataStream &in, QDate &date)
Lit une date depuis le flux in dans le fichier date.
Voir aussi Serializing Qt Data Types.
© 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.