Sur cette page

QDateTime Class

La classe QDateTime fournit des fonctions de date et d'heure. Plus d'informations...

En-tête : #include <QDateTime>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core

Cette classe est faiblement comparable.

Note : Toutes les fonctions de cette classe sont réentrantes.

Types publics

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

Fonctions publiques

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

Membres publics statiques

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

Description détaillée

Un objet QDateTime encode une date de calendrier et une heure d'horloge (une "datetime") conformément à une représentation du temps. Il combine les caractéristiques des classes QDate et QTime. Il peut lire l'heure actuelle à partir de l'horloge du système. Elle fournit des fonctions permettant de comparer des dates et de manipuler une date en ajoutant un certain nombre de secondes, de jours, de mois ou d'années.

QDateTime peut décrire des dates par rapport à local time, à UTC, à un offset from UTC ou à un time zone spécifié. Chacune de ces représentations du temps peut être encapsulée dans une instance appropriée de la classe QTimeZone. Par exemple, un fuseau horaire "Europe/Berlin" appliquera les règles d'heure d'été en vigueur en Allemagne. En revanche, un décalage fixe de +3600 secondes par rapport à l'UTC est en avance d'une heure par rapport à l'UTC (généralement écrit en notation ISO standard "UTC+01:00"), sans complications liées à l'heure d'été. Lors de l'utilisation de l'heure locale ou d'un fuseau horaire spécifié, les transitions de fuseau horaire (voir below) sont prises en compte. La fonction timeSpec() d'un QDateTime vous indique lequel des quatre types de représentation du temps est utilisé ; sa fonction timeRepresentation() fournit une description complète de cette représentation du temps, sous la forme d'un QTimeZone.

Un objet QDateTime est généralement créé soit en indiquant explicitement une date et une heure dans le constructeur, soit en utilisant une fonction statique telle que currentDateTime() ou fromMSecsSinceEpoch(). La date et l'heure peuvent être modifiées à l'aide de setDate() et setTime(). Une date peut également être définie à l'aide de la fonction setMSecsSinceEpoch() qui prend le temps, en millisecondes, depuis le début, en UTC, de l'année 1970. La fonction fromString() renvoie une QDateTime à partir d'une chaîne de caractères et d'un format de date utilisé pour interpréter la date dans la chaîne.

QDateTime::currentDateTime() renvoie une QDateTime qui exprime la date et l'heure actuelles par rapport à une représentation temporelle spécifique, telle que l'heure locale (par défaut). QDateTime::currentDateTimeUtc() renvoie une QDateTime qui exprime la date et l'heure actuelles par rapport à l'UTC ; elle est équivalente à QDateTime::currentDateTime(QTimeZone::UTC).

Les fonctions date() et time() permettent d'accéder aux parties date et heure de la date. La même information est fournie sous forme de texte par la fonction toString().

QDateTime fournit un ensemble complet d'opérateurs pour comparer deux objets QDateTime, 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 millisecondes en utilisant addMSecs(), de secondes en utilisant addSecs(), ou 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, secsTo() renvoie le nombre de secondes entre deux dates et msecsTo() renvoie le nombre de millisecondes entre deux dates. Ces opérations tiennent compte de l'heure d'été (DST) et d'autres changements de fuseau horaire, le cas échéant.

Utilisez toTimeZone() pour réexprimer une date en termes de représentation temporelle différente. En passant un léger QTimeZone qui représente l'heure locale, UTC ou un décalage fixe par rapport à UTC, vous pouvez convertir la date pour utiliser la représentation temporelle correspondante ; ou vous pouvez passer un fuseau horaire complet (dont timeSpec() est Qt::TimeZone) pour l'utiliser à la place.

Remarques

QDateTime ne tient pas compte des secondes intercalaires.

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.

Il n'y a pas d'année 0 dans le calendrier grégorien. 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 est le 31 décembre de l'ère chrétienne.

L'utilisation de l'heure locale (par défaut) ou d'un fuseau horaire spécifique implique la nécessité de résoudre les problèmes liés à transitions. Par conséquent, les opérations sur de telles instances QDateTime (y compris leur construction) peuvent être plus coûteuses que les opérations équivalentes utilisant UTC ou un décalage fixe par rapport à celui-ci.

Plage de dates valides

La gamme de valeurs que QDateTime peut représenter dépend de l'implémentation du stockage interne. QDateTime est actuellement stocké dans un qint64 sous la forme d'une valeur en série de msecs codant la date et l'heure. Cela limite la plage de dates à environ ±292 millions d'années, alors que la plage QDate est de ±2 milliards d'années. Lors de la création d'un QDateTime avec des valeurs extrêmes, il convient de veiller à ne pas saturer l'espace de stockage. La plage exacte des valeurs prises en charge varie en fonction de la représentation du temps utilisée.

Utilisation des fuseaux horaires

QDateTime utilise les informations de fuseau horaire du système pour déterminer le fuseau horaire local actuel et son décalage par rapport à l'UTC. Si le système n'est pas configuré correctement ou n'est pas à jour, QDateTime donnera des résultats erronés.

QDateTime utilise également les informations fournies par le système pour déterminer les décalages des autres fuseaux horaires par rapport à UTC. Si ces informations sont incomplètes ou périmées, QDateTime donnera des résultats erronés. Voir la documentation de QTimeZone pour plus de détails.

Sur les systèmes Unix modernes, cela signifie que QDateTime dispose généralement d'informations précises sur les transitions historiques (y compris l'heure d'été, voir ci-dessous) dans la mesure du possible. Sous Windows, où le système ne prend pas en charge les données historiques sur les fuseaux horaires, la précision historique n'est pas maintenue en ce qui concerne les transitions de fuseaux horaires, notamment l'heure d'été et l'heure d'hiver. Cependant, en compilant Qt avec la bibliothèque ICU, QTimeZone disposera de la même base de données de fuseaux horaires que celle utilisée sous Unix.

Transitions de fuseaux horaires

QDateTime prend en compte les transitions de fuseau horaire, à la fois les transitions entre l'heure normale et l'heure d'été (DST) et les transitions qui surviennent lorsqu'une zone change son décalage standard. Par exemple, si la transition a lieu à 2 heures du matin et que l'horloge avance à 3 heures, il manque une heure entre 02:00:00 et 02:59:59.999. Une telle transition est connue sous le nom de "printemps en avant" et les heures manquantes n'ont aucune signification. Lorsqu'une transition s'effectue dans l'autre sens, appelée "retour en arrière", un intervalle de temps est répété, d'abord dans l'ancienne zone (généralement l'heure avancée), puis dans la nouvelle zone (généralement l'heure normale), de sorte que les heures comprises dans cet intervalle sont ambiguës.

Certaines zones utilisent l'heure d'été "inversée", c'est-à-dire l'heure normale en été et l'heure d'été (avec un décalage plus faible) en hiver. Pour ces zones, l'avance du printemps a toujours lieu au printemps et saute une heure, mais il s'agit d'une transition hors de l' heure d'été, tandis que le recul de l'automne répète toujours une heure d'automne, mais il s'agit d'une transition vers l' heure d'été.

Lors de la conversion à partir d'une heure UTC (ou d'une heure à décalage fixe par rapport à l'UTC), il y a toujours un résultat valide sans ambiguïté dans n'importe quel fuseau horaire. Cependant, lorsqu'on combine une date et une heure pour obtenir une date exprimée par rapport à l'heure locale ou à un fuseau horaire spécifique, le résultat nominal peut tomber dans une transition, ce qui le rend soit invalide, soit ambigu. Les méthodes où cette situation peut se produire prennent un paramètre resolve: celui-ci est toujours ignoré si la date demandée est valide et non ambiguë. Voir TransitionResolution pour les options qu'il permet de contrôler. Avant Qt 6.7, l'équivalent de son LegacyBehavior était sélectionné.

Pour l'intervalle sauté d'un spring forward, l'interprétation du temps demandé avec l'un ou l'autre des décalages donne un temps réel auquel l'autre décalage était utilisé ; ainsi, passer TransitionResolution::RelativeToBefore pour resolve donnera en fait un temps après la transition, qui aurait eu la représentation demandée si la transition n'avait pas eu lieu. De même, TransitionResolution::RelativeToAfter pour resolve donne un temps avant la transition, qui aurait eu la représentation demandée si la transition s'était produite plus tôt.

Lorsque QDateTime effectue des opérations arithmétiques, comme avec addDay() ou addSecs(), il veille à produire un résultat valide. Par exemple, un jour où il y a un saut de puce de 02:00 à 03:00, l'ajout d'une seconde à 01:59:59 donnera 03:00:00. En ajoutant un jour à 02:30 le jour précédent, on obtient 03:30 le jour de la transition, tandis qu'en soustrayant un jour, en appelant addDay(-1), à 02:30 le jour suivant, on obtient 01:30 le jour de la transition. Alors que addSecs() fournit une heure décalée du nombre de secondes donné, addDays() ajuste la date et n'ajuste l'heure que s'il en résulte un résultat invalide. L'application de addDays(1) à 03:00 le jour précédant l'avancée du printemps donnera simplement 03:00 le jour de la transition, même si cette dernière n'a lieu que 23 heures après la première ; mais addSecs(24 * 60 * 60) donnera 04:00 le jour de la transition, puisque c'est 24 heures plus tard. Les transitions typiques font que certains jours durent 23 ou 25 heures.

Pour les dates que le système time_t peut représenter (de 1901-12-14 à 2038-01-18 sur les systèmes avec time_t 32 bits ; pour toute la plage que QDateTime peut représenter si le type est 64 bits), les API standard du système sont utilisées pour déterminer le décalage de l'heure locale par rapport à l'UTC. Pour les dates qui ne sont pas gérées par ces API système (y compris certaines dans la plage time_t ), QTimeZone::systemTimeZone() est utilisé, s'il est disponible, ou une estimation est faite dans la mesure du possible. Dans tous les cas, les informations de décalage utilisées dépendent du système et peuvent être incomplètes ou, pour les dates passées, historiquement inexactes. En outre, pour les dates futures, les décalages du fuseau horaire local et les règles de l'heure d'été peuvent changer avant que cette date n'arrive.

Transitions d'une journée entière

Un petit nombre de fuseaux horaires ont sauté ou répété des jours entiers dans le cadre du déplacement de la ligne internationale de changement de date. Pour ces zones, daysTo() ne sera pas conscient de la duplication ou de l'écart, et utilisera simplement la différence de date calendaire ; en revanche, msecsTo() et secsTo() connaissent le véritable intervalle de temps. De même, addMSecs() et addSecs() correspondent directement au temps écoulé, tandis que addDays(), addMonths() et addYears() suivent le calendrier nominal, sauf lorsque l'atterrissage dans une lacune ou une duplication nécessite de résoudre une ambiguïté ou une invalidité due à une duplication ou à une omission.

Note : Les jours "perdus" lors d'un changement de calendrier, par exemple du calendrier julien au calendrier grégorien, n'affectent pas QDateTime. Bien que les deux calendriers décrivent les dates différemment, les jours successifs à travers le changement sont décrits par des instances QDate consécutives, chacune un jour plus tard que la précédente, comme décrit par l'un ou l'autre des calendriers ou par leurs valeurs toJulianDay(). En revanche, une zone qui saute ou duplique un jour modifie sa description du temps, et non de la date, pour autant qu'elle le fasse de 24 heures entières.

Décalages par rapport à UTC

Les décalages par rapport à l'UTC sont mesurés en secondes à l'est de Greenwich. Le moment décrit par une date et une heure données, par exemple midi un jour donné, dépend de la représentation du temps utilisée. Celles dont le décalage par rapport à l'UTC est le plus élevé décrivent un moment plus précoce, et celles dont le décalage est le plus faible un moment plus tardif, pour toute combinaison donnée de date et d'heure.

Il n'y a pas de restriction explicite sur la taille d'un décalage par rapport à UTC, mais une limite implicite est imposée lors de l'utilisation des méthodes toString() et fromString() qui utilisent un format ±hh:mm, limitant effectivement la plage à ± 99 heures et 59 minutes et à des minutes entières uniquement. Il convient de noter qu'actuellement, aucun fuseau horaire n'a de décalage en dehors de la plage de ±14 heures et que tous les décalages connus sont des multiples de cinq minutes. Les fuseaux horaires historiques ont une plage plus large et peuvent avoir des décalages incluant des secondes ; ces dernières ne peuvent pas être représentées fidèlement dans des chaînes de caractères.

Voir aussi QDate, QTime, QDateTimeEdit, et QTimeZone.

Documentation sur les types de membres

[since 6.7] enum class QDateTime::TransitionResolution

Cette énumération est utilisée pour résoudre les combinaisons de dates qui tombent dans Timezone transitions.

Lors de la construction d'une date, spécifiée en termes d'heure locale ou de fuseau horaire avec heure d'été, ou lors de la révision d'une date avec setDate(), setTime() ou setTimeZone(), les paramètres donnés peuvent impliquer une représentation du temps qui n'a pas de signification ou qui a deux significations dans le fuseau. De telles représentations du temps sont décrites comme étant dans la transition. Dans les deux cas, nous pouvons simplement renvoyer une date invalide, pour indiquer que l'opération est mal définie. Dans le cas ambigu, nous pouvons alternativement sélectionner l'un des deux moments qui pourraient être signifiés. Lorsqu'il n'y a pas de signification, nous pouvons sélectionner un moment de part et d'autre qui aurait pu être signifié de manière plausible. Par exemple, lorsque l'on avance à partir d'un moment antérieur, on peut sélectionner le moment après la transition qui correspond effectivement à la durée spécifiée après le moment antérieur en question. Les options spécifiées ici configurent la manière dont cette sélection est effectuée.

ConstanteValeurDescription
QDateTime::TransitionResolution::Reject0Traiter tout moment d'une transition comme invalide. Soit il l'est réellement, soit il est ambigu.
QDateTime::TransitionResolution::RelativeToBefore1Sélectionne un moment comme s'il s'agissait d'un pas en avant à partir d'un moment antérieur à la transition. Cela permet d'interpréter le temps demandé en utilisant le décalage en vigueur avant la transition et, si nécessaire, de convertir le résultat en décalage en vigueur au moment résultant.
QDateTime::TransitionResolution::RelativeToAfter2Sélectionner un moment comme si l'on reculait d'un moment après la transition. Ceci interprète l'heure demandée en utilisant le décalage en vigueur après la transition et, si nécessaire, convertit le résultat en décalage en vigueur à l'heure résultante.
QDateTime::TransitionResolution::PreferBefore3Sélectionne un moment avant la transition,
QDateTime::TransitionResolution::PreferAfter4Sélectionne un moment après la transition.
QDateTime::TransitionResolution::PreferStandard5Sélectionne une heure du côté de l'heure standard de la transition.
QDateTime::TransitionResolution::PreferDaylightSaving6Sélectionne une heure du côté de l'heure d'été de la transition.

Une constante supplémentaire, LegacyBehavior, est utilisée comme valeur par défaut pour les paramètres TransitionResolution dans certains constructeurs et fonctions de définition. Il s'agit d'un alias pour RelativeToBefore, qui implémente un comportement qui correspond le plus à celui de QDateTime avant la version 6.7 de Qt.

Pour addDays(), addMonths() ou addYears(), le comportement est et (le plus souvent) était d'utiliser RelativeToBefore si l'on ajoute un ajustement positif et RelativeToAfter si l'on ajoute un ajustement négatif.

Note : Dans les fuseaux horaires où l'heure d'été augmente le décalage par rapport à UTC en été (connu sous le nom de "DST positif"), PreferStandard est un alias pour RelativeToAfter et PreferDaylightSaving pour RelativeToBefore. Dans les fuseaux horaires où le mécanisme d'heure d'été est une diminution du décalage par rapport à l'UTC en hiver (appelé "DST négatif"), l'inverse s'applique, à condition que le système d'exploitation indique - comme il le fait sur la plupart des plates-formes - si une date est en DST ou en heure normale. Pour certaines plates-formes, où les détails de la transition ne sont pas disponibles, même pour les dates Qt::TimeZone, QTimeZone est obligé de supposer que le côté ayant le plus faible décalage par rapport à UTC est l'heure normale, ce qui revient à supposer que l'heure d'été est positive.

Les tableaux suivants illustrent la manière dont le constructeur de QDateTime résout une requête pour 02:30 un jour où l'heure locale présente une transition entre 02:00 et 03:00, avec une heure standard nominale LST et une heure d'été LDT des deux côtés, dans les différents cas possibles. Le type de transition peut consister à sauter une heure ou à la répéter. Le type de transition et la valeur du paramètre resolve déterminent l'heure réelle sélectionnée à la date donnée. Tout d'abord, le cas courant de l'heure d'été positive, où :

Avant02:00-03:00Aprèsresolvesélectionné
LSTsauterLDTRelativeToBefore03:30 LDT
LSTsauterLDTRelativeToAfter01:30 LST
LSTsauterLDTPreferBefore01:30 LST
LSTsauterLDTPreferAfter03:30 LDT
LSTsauterLDTPreferStandard01:30 LST
LSTsauterLDTPreferDaylightSaving03:30 LDT
LDTrépéterLSTRelativeToBefore02:30 LDT
LDTrépéterLSTRelative à l'après02:30 LST
LDTrépéterLSTPreferBefore02:30 LDT
LDTrépéterLSTPreferAfter02:30 LST
LDTrépéterLSTPreferStandard02:30 LST
LDTrépéterLSTPreferDaylightSaving02:30 LDT

Deuxièmement, le cas de l'heure d'été négative, en utilisant l'heure d'été en hiver et en sautant une heure pour passer à l'heure d'hiver en été, puis en répétant une heure au moment du retour à l'hiver :

LDTsauterLSTPar rapport à avant03:30 LST
LDTsauterLSTRelativeToAfter01:30 LDT
LDTsauterLSTPreferBefore01:30 LDT
LDTsauterLSTPreferAfter03:30 LST
LDTsauterLSTPreferStandard03:30 LST
LDTsauterLSTPreferDaylightSaving01:30 LDT
LSTrépéterLDTRelativeToBefore02:30 LST
LSTrépéterLDTRelative à l'après02:30 LDT
LSTrépéterLDTPreferBefore02:30 LST
LSTrépéterLDTPreferAfter02:30 LDT
LSTrépéterLDTPreferStandard02:30 LST
LSTrépéterLDTPréférence pour l'heure d'été02:30 LDT

Reject peut être utilisé pour demander aux API QDateTime concernées de renvoyer un objet datetime invalide afin que votre code puisse traiter lui-même les transitions, par exemple en avertissant un utilisateur que la date qu'il a sélectionnée se trouve dans un intervalle de transition, afin de lui offrir la possibilité de résoudre un conflit ou une ambiguïté. Le code qui utilise cette fonction peut trouver les autres options ci-dessus utiles pour déterminer les informations pertinentes à utiliser dans sa propre résolution (ou celle de l'utilisateur). Si le début ou la fin de la transition, ou le moment de la transition elle-même, est la bonne résolution, les API de transition de QTimeZone peuvent être utilisées pour obtenir ces informations. Vous pouvez déterminer si la transition est un intervalle répété ou sauté en utilisant secsTo() pour mesurer le temps réel entre midi le jour précédent et le jour suivant. Le résultat sera inférieur à 48 heures pour un intervalle sauté (tel qu'une avance) et supérieur à 48 heures pour un intervalle répété (tel qu'un recul).

Remarque : Lorsqu'une résolution autre que Reject est spécifiée, un objet QDateTime valide est renvoyé, si possible. Si la date et l'heure demandées se situent dans un intervalle, la date et l'heure renvoyées n'auront pas le time() demandé - ou, dans certains cas, le date(), si une journée entière a été sautée. Vous pouvez donc détecter l'existence d'un décalage en comparant date() et time() à ce qui a été demandé.

Relation avec d'autres logiciels de datation

Les API datetime du langage de programmation Python ont un paramètre fold qui correspond à RelativeToBefore (fold = True) et RelativeToAfter (fold = False).

La proposition Temporal visant à remplacer la proposition Date de JavaScript offre quatre options pour la résolution d'une transition, en tant que valeur d'un paramètre disambiguation. L'option 'reject' soulève une exception, ce qui correspond à peu près à la production d'un résultat non valide par Reject. Les options 'earlier' et 'later' correspondent à PreferBefore et PreferAfter. L'option 'compatible' correspond à RelativeToBefore (et à fold = True de Python).

Cette liste a été introduite dans Qt 6.7.

Voir aussi Timezone transitions.

enum class QDateTime::YearRange

Ce type énuméré décrit la plage d'années (dans le calendrier grégorien) représentable par QDateTime:

ConstanteValeurDescription
QDateTime::YearRange::First-292275056Les dernières parties de cette année sont représentables
QDateTime::YearRange::Last+292278994Les parties antérieures de cette année sont représentables

Toutes les dates strictement comprises entre ces deux années sont également représentables. Notez cependant que le calendrier grégorien n'a pas d'année zéro.

Remarque : QDate peut décrire des dates dans un plus grand nombre d'années. Dans la plupart des cas, cela ne fait guère de différence, car la plage d'années que QDateTime peut prendre en charge atteint 292 millions d'années de part et d'autre de 1970.

Voir également isValid() et QDate.

Documentation des fonctions membres

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

Construit une date avec les données date et time, en utilisant la représentation du temps décrite par timeZone.

Si date est valide et time ne l'est pas, l'heure sera fixée à minuit. Si timeZone n'est pas valide, la date sera invalide. Si date et time décrivent un moment proche d'une transition pour timeZone, resolve contrôle la manière dont cette situation est résolue.

Note : Avant la version 6.7 de Qt XML, la version de cette fonction n'avait pas le paramètre resolve et n'avait donc aucun moyen de résoudre les ambiguïtés liées aux transitions.

[noexcept] QDateTime::QDateTime()

Construit une date nulle, en utilisant nominalement l'heure locale.

Une date nulle n'est pas valide, puisque sa date et son heure ne le sont pas.

Voir aussi isValid(), setMSecsSinceEpoch(), setDate(), setTime(), et setTimeZone().

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

Construit une date avec les données date et time, en utilisant l'heure locale.

Si date est valide et que time ne l'est pas, l'heure sera minuit. Si date et time décrivent un moment proche d'une transition pour l'heure locale, resolve contrôle la façon dont cette situation est résolue.

Remarque : avant la version 6.7 de Qt XML, la version de cette fonction ne comportait pas le paramètre resolve et ne permettait donc pas de résoudre les ambiguïtés liées aux transitions.

Il s'agit d'une fonction surchargée.

Cette fonction a été introduite dans Qt 6.5.

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

Construit une copie de la date other.

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

Déplace le contenu de la date temporaire other vers cet objet et laisse other dans un état non spécifié (mais correct).

[noexcept] QDateTime::~QDateTime()

Détruit la date.

QDateTime QDateTime::addDays(qint64 ndays) const

Renvoie un objet QDateTime contenant une date ndays qui est postérieure à la date de cet objet (ou antérieure si ndays est négatif).

Si timeSpec() est Qt::LocalTime ou Qt::TimeZone et que la date et l'heure résultantes se situent dans l'heure de transition entre l'heure normale et l'heure d'été, le résultat sera juste au-delà de cet écart, dans le sens du changement. Si la transition a lieu à 2 heures du matin et que l'horloge avance à 3 heures, le résultat de la visée entre 2 heures et 3 heures sera ajusté pour tomber avant 2 heures (si ndays < 0) ou après 3 heures (dans le cas contraire).

Voir également daysTo(), addMonths(), addYears(), addSecs() et Timezone transitions.

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

Renvoie un objet QDateTime contenant une date msecs millisecondes plus tard que la date de cet objet (ou plus tôt si msecs est négatif).

Si cette date n'est pas valide, une date invalide sera retournée.

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.

Cette fonction a été introduite dans Qt 6.4.

Voir aussi addMSecs(), msecsTo(), addDays(), addMonths(), et addYears().

QDateTime QDateTime::addMSecs(qint64 msecs) const

Renvoie un objet QDateTime contenant une date msecs millisecondes plus tard que la date de cet objet (ou plus tôt si msecs est négatif).

Si cette date n'est pas valide, une date invalide sera renvoyée.

Voir aussi addSecs(), msecsTo(), addDays(), addMonths() et addYears().

QDateTime QDateTime::addMonths(int nmonths) const

Renvoie un objet QDateTime contenant une date nmonths mois plus tard que la date de cet objet (ou plus tôt si nmonths est négatif).

Si timeSpec() est Qt::LocalTime ou Qt::TimeZone et que la date et l'heure résultantes tombent dans l'heure de transition entre l'heure normale et l'heure d'été, le résultat se situera juste au-delà de cet écart, dans le sens du changement. Si la transition a lieu à 2 heures du matin et que l'horloge avance à 3 heures, le résultat de la visée entre 2 heures et 3 heures sera ajusté pour tomber avant 2 heures (si nmonths < 0) ou après 3 heures (dans le cas contraire).

Voir également daysTo(), addDays(), addYears(), addSecs() et Timezone transitions.

QDateTime QDateTime::addSecs(qint64 s) const

Renvoie un objet QDateTime contenant une date s qui est postérieure de quelques secondes à la date de cet objet (ou antérieure si s est négatif).

Si cette date n'est pas valide, une date invalide sera renvoyée.

Voir aussi addMSecs(), secsTo(), addDays(), addMonths() et addYears().

QDateTime QDateTime::addYears(int nyears) const

Renvoie un objet QDateTime contenant une date nyears postérieure d'un an à la date de cet objet (ou antérieure si nyears est négatif).

Si timeSpec() est Qt::LocalTime ou Qt::TimeZone et que la date et l'heure résultantes se situent dans l'heure de transition entre l'heure normale et l'heure d'été, le résultat sera juste au-delà de cet écart, dans le sens du changement. Si la transition a lieu à 2 heures du matin et que l'horloge avance à 3 heures, le résultat de la visée entre 2 heures et 3 heures sera ajusté pour tomber avant 2 heures (si nyears < 0) ou après 3 heures (dans le cas contraire).

Voir également daysTo(), addDays(), addMonths(), addSecs() et Timezone transitions.

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

Renvoie l'heure actuelle de l'horloge système, en utilisant la représentation du temps décrite par zone. Si zone est omis, l'heure locale est utilisée.

Cette fonction a été introduite dans Qt 6.5.

Voir aussi currentDateTimeUtc(), QDate::currentDate(), QTime::currentTime(), et toTimeZone().

[static] QDateTime QDateTime::currentDateTime()

Cette fonction surcharge QDateTime::currentDateTime().

[static] QDateTime QDateTime::currentDateTimeUtc()

Renvoie l'heure actuelle de l'horloge du système, exprimée en termes d'UTC.

Équivalent à currentDateTime(QTimeZone::UTC).

Voir aussi currentDateTime(), QDate::currentDate(), QTime::currentTime(), et toTimeZone().

[static noexcept] qint64 QDateTime::currentMSecsSinceEpoch()

Renvoie le nombre actuel de millisecondes depuis le début, en UTC, de l'année 1970.

Ce nombre est similaire à la variable POSIX time_t, mais exprimé en millisecondes au lieu de secondes.

Voir aussi currentDateTime(), currentDateTimeUtc(), et toTimeZone().

[static noexcept] qint64 QDateTime::currentSecsSinceEpoch()

Renvoie le nombre de secondes écoulées depuis le début, en UTC, de l'année 1970.

Ce nombre est similaire à la variable POSIX time_t.

Voir aussi currentMSecsSinceEpoch().

QDate QDateTime::date() const

Renvoie la partie date de l'heure de la date.

Voir aussi setDate(), time(), et timeRepresentation().

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

Renvoie le nombre de jours entre cette date et la date other. Le nombre de jours est compté comme le nombre de fois où minuit est atteint entre cette date et la date other. Cela signifie qu'une différence de 10 minutes entre 23:55 et 0:05 le jour suivant compte pour un jour.

Si la date other est antérieure à cette date, la valeur renvoyée est négative.

Exemple :

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

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

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

Voir aussi addDays(), secsTo() et msecsTo().

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

Construit un nouveau QDateTime contenant une copie du CFDate date.

Voir aussi toCFDate().

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

Renvoie une date représentant un moment du nombre donné msecs de millisecondes après le début, en UTC, de l'année 1970, décrite comme spécifié par timeZone. La représentation temporelle par défaut est l'heure locale.

Notez qu'il existe des valeurs possibles pour msecs qui se situent en dehors de la plage valide de QDateTime, à la fois négatives et positives. Le comportement de cette fonction est indéfini pour ces valeurs.

Voir aussi fromSecsSinceEpoch(), toMSecsSinceEpoch() et setMSecsSinceEpoch().

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

Cette fonction surcharge QDateTime::fromMSecsSinceEpoch().

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

Construit un nouveau QDateTime contenant une copie du NSDate date.

Voir aussi toNSDate().

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

Renvoie un datetime représentant un moment du nombre donné secs de secondes après le début, en UTC, de l'année 1970, décrit comme spécifié par timeZone. La représentation temporelle par défaut est l'heure locale.

Notez qu'il existe des valeurs possibles pour secs qui se situent en dehors de la plage valide de QDateTime, à la fois négatives et positives. Le comportement de cette fonction est indéfini pour ces valeurs.

Voir aussi fromMSecsSinceEpoch(), toSecsSinceEpoch() et setSecsSinceEpoch().

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

Cette fonction surcharge QDateTime::fromSecsSinceEpoch().

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

Construit un datetime dont la date et l'heure sont le nombre de millisecondes représenté par time, compté depuis 1970-01-01T00:00:00.000 en heure locale (Qt::LocalTime).

Note : Cette fonction nécessite C++20.

Cette fonction a été introduite dans Qt 6.4.

Voir aussi toStdSysMilliseconds() et fromMSecsSinceEpoch().

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

Construit une date représentant le même point dans le temps que time, en utilisant Qt::UTC comme représentation du temps.

L'horloge de time doit être compatible avec std::chrono::system_clock; en particulier, une conversion supportée par std::chrono::clock_cast doit exister. Après la conversion, le type de durée du résultat doit être convertible en std::chrono::milliseconds.

Si ce n'est pas le cas, l'appelant doit effectuer la conversion d'horloge nécessaire vers std::chrono::system_clock et la conversion nécessaire du type de durée (coulé/rond/plancher/voile/...) afin que l'entrée de cette fonction satisfasse aux contraintes ci-dessus.

Note : Cette fonction nécessite C++20.

Cette fonction a été introduite dans Qt 6.4.

Voir aussi toStdSysMilliseconds() et fromMSecsSinceEpoch().

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

Construit un datetime dont la date et l'heure sont le nombre de millisecondes représenté par time, compté depuis 1970-01-01T00:00:00.000 en heure locale (Qt::LocalTime).

Note : Cette fonction nécessite C++20.

Cette fonction a été introduite dans Qt 6.4.

Voir aussi toStdSysMilliseconds() et fromMSecsSinceEpoch().

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

Construit une date représentant le même point dans le temps que time, en utilisant Qt::UTC comme représentation du temps.

Cette fonction surcharge QDateTime::fromStdTimePoint().

Cette fonction a été introduite dans Qt 6.4.

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

Construit une date représentant le même point dans le temps que time. Le résultat sera exprimé dans le fuseau horaire de time.

Note : Cette fonction nécessite C++20.

Cette fonction a été introduite dans Qt 6.4.

Voir aussi QTimeZone, toStdSysMilliseconds(), et fromMSecsSinceEpoch().

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

Retourne le QDateTime représenté par le string, en utilisant le format donné, ou une date invalide si la chaîne ne peut pas être analysée.

Utilise le calendrier cal s'il est fourni, sinon le calendrier grégorien.

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. Dans certains cas, d'autres champs peuvent conduire à la sélection du siècle suivant ou précédent, afin d'obtenir un résultat cohérent avec tous les champs fournis. Voir QDate::fromString() pour plus de détails.

Outre les expressions reconnues dans la chaîne de format pour représenter des parties de la date et de l'heure, par QDate::fromString() et QTime::fromString(), cette méthode prend en charge les expressions suivantes :

ExpressionSortie
tle fuseau horaire (décalage, nom, "Z" ou décalage avec préfixe "UTC")
ttle fuseau horaire au format offset sans les deux points entre les heures et les minutes (par exemple "+0200")
tttle fuseau horaire au format offset avec deux points entre les heures et les minutes (par exemple "+02:00")
ttttle nom du fuseau horaire, soit ce que QTimeZone::displayName() indique pour QTimeZone::LongName, soit l'ID IANA de la zone (par exemple "Europe/Berlin"). Les noms reconnus sont ceux connus par QTimeZone, qui peuvent dépendre du système d'exploitation utilisé.

Si le spécificateur de format 't' n'est pas présent, le fuseau horaire local du système est utilisé. Pour les valeurs par défaut de tous les autres champs, voir QDate::fromString() et QTime::fromString().

Par exemple :

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

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.

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

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

Si le format n'est pas respecté, une adresse QDateTime invalide est renvoyée. Si le format est respecté mais que string représente une date non valide (par exemple, dans un intervalle ignoré par une transition de fuseau horaire), un QDateTime valide est renvoyé, qui représente une date proche qui est valide.

Les expressions qui n'ont pas de zéro en tête (d, M, h, m, s, z) seront gourmandes. Cela signifie qu'elles utiliseront deux chiffres (ou trois, pour z) même si cela les place en dehors de la plage et/ou laisse trop peu de chiffres pour les autres sections.

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

Cela aurait pu signifier 1 janvier 00:30.00 mais le M prendra deux chiffres.

Les champs de string mal spécifiés entraîneront le renvoi d'un QDateTime non valide. Seules les dates comprises entre le début de l'année 100 et la fin de l'année 9999 sont prises en charge. Notez que les dates proches des extrémités de cette plage dans d'autres fuseaux horaires, y compris UTC, peuvent se situer en dehors de la plage (et donc être traitées comme invalides) en fonction du fuseau horaire local.

Remarque : les noms des jours et des mois ainsi que les indicateurs AM/PM doivent être indiqués en anglais (locale C). Si des noms de jour et de mois localisés ou des formes localisées de AM/PM doivent être reconnus, utilisez QLocale::system().toDateTime().

Remarque : 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, 'tttttt' correspondrait à "Europe/BerlinEurope/Berlin" et définirait la zone à l'heure de Berlin ; si la chaîne de date contenait "Europe/BerlinZ", elle "correspondrait" mais produirait un résultat incohérent, conduisant à une date invalide.

Voir également toString(), QDate::fromString(), QTime::fromString() et QLocale::toDateTime().

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

Cette fonction surcharge QDateTime::fromString().

Cette fonction a été introduite dans Qt 6.0.

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

Retourne le QDateTime représenté par le string, en utilisant le format donné, ou une date invalide si cela n'est pas possible.

Note pour Qt::TextDate: seuls les noms de mois courts en anglais (par exemple "Jan" en forme courte ou "January" en forme longue) sont reconnus.

Il s'agit d'une fonction surchargée.

Voir aussi toString() et QLocale::toDateTime().

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

Cette fonction surcharge QDateTime::fromString().

Cette fonction a été introduite dans Qt 6.0.

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

Utilise une construction par défaut QCalendar.

Cette fonction surcharge QDateTime::fromString().

Cette fonction a été introduite dans Qt 6.7.

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

Cette fonction surcharge QDateTime::fromString().

Cette fonction a été introduite dans Qt 6.0.

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

Utilise une construction par défaut QCalendar.

Cette fonction surcharge QDateTime::fromString().

Cette fonction a été introduite dans Qt 6.7.

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

Cette fonction surcharge QDateTime::fromString().

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

Utilise une construction par défaut QCalendar.

Cette fonction surcharge QDateTime::fromString().

Cette fonction a été introduite dans Qt 6.7.

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

Cette fonction surcharge QDateTime::fromString().

Cette fonction a été introduite dans Qt 6.7.

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

Cette fonction surcharge QDateTime::fromString().

Cette fonction a été introduite dans Qt 6.0.

bool QDateTime::isDaylightTime() const

Renvoie si cette date tombe dans l'heure d'été.

Si Qt::TimeSpec n'est pas Qt::LocalTime ou Qt::TimeZone, le résultat sera toujours faux.

Voir aussi timeSpec().

bool QDateTime::isNull() const

Renvoie true si la date et l'heure sont toutes deux nulles ; sinon, renvoie false. Une date nulle n'est pas valide.

Voir aussi QDate::isNull(), QTime::isNull(), et isValid().

bool QDateTime::isValid() const

Renvoie true si cette date représente un moment précis, sinon false.

Une date est valide si la date et l'heure sont valides et si la représentation du temps utilisée donne une signification valide à leur combinaison. Lorsque la représentation du temps est un fuseau horaire spécifique ou l'heure locale, il peut y avoir des moments à certaines dates que le fuseau saute dans sa représentation, comme lorsqu'un passage à l'heure d'été saute une heure (typiquement pendant une nuit au printemps). Par exemple, si l'heure d'été se termine à 2 heures du matin et que l'horloge avance à 3 heures, les dates comprises entre 02:00:00 et 02:59:59.999 ce jour-là ne sont pas valides.

Voir également QDateTime::YearRange, QDate::isValid(), et QTime::isValid().

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

Renvoie le nombre de millisecondes entre cette date et la date other. Si la date other est antérieure à cette date, la valeur renvoyée est négative.

Avant d'effectuer la comparaison, les deux dates sont converties en Qt::UTC pour s'assurer que le résultat est correct si l'heure d'été (DST) s'applique à l'une des deux dates et pas à l'autre.

Renvoie 0 si l'une des deux dates n'est pas valide.

Voir aussi addMSecs(), daysTo(), et QTime::msecsTo().

int QDateTime::offsetFromUtc() const

Renvoie le décalage de cette date par rapport à l'UTC en secondes.

Le résultat dépend de timeSpec() :

  • Qt::UTC Le décalage est de 0.
  • Qt::OffsetFromUTC Le décalage est la valeur définie à l'origine.
  • Qt::LocalTime Le décalage de l'heure locale par rapport à UTC est renvoyé.
  • Qt::TimeZone Le décalage utilisé par le fuseau horaire est renvoyé.

Pour les deux derniers, le décalage à cette date et heure sera renvoyé, en tenant compte du décalage de l'heure d'été. Le décalage est la différence entre l'heure locale ou l'heure du fuseau horaire donné et l'heure UTC ; il est positif dans les fuseaux horaires en avance sur UTC (à l'est du méridien d'origine), négatif pour ceux qui sont en retard sur UTC (à l'ouest du méridien d'origine).

Voir également setTimeZone().

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

Renvoie le nombre de secondes entre cette date et la date other. Si la date other est antérieure à cette date, la valeur renvoyée est négative.

Avant d'effectuer la comparaison, les deux dates sont converties en Qt::UTC pour s'assurer que le résultat est correct si l'heure d'été (DST) s'applique à l'une des deux dates mais pas à l'autre.

Renvoie 0 si l'une des deux dates n'est pas valide.

Exemple :

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

Voir aussi addSecs(), daysTo() et QTime::secsTo().

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

Fixe la partie date de cette date à date.

Si aucune heure n'est encore définie, elle est fixée à minuit. Si date est invalide, QDateTime le devient aussi.

Si date et time() décrivent un moment proche d'une transition pour la représentation temporelle de cette date, resolve contrôle la façon dont cette situation est résolue.

Note : Avant la version 6.7 de Qt XML, la version de cette fonction n'avait pas le paramètre resolve et n'avait donc aucun moyen de résoudre les ambiguïtés liées aux transitions.

Voir aussi date(), setTime(), et setTimeZone().

void QDateTime::setMSecsSinceEpoch(qint64 msecs)

Définit l'heure de la date pour qu'elle représente un moment un nombre donné, msecs, de millisecondes après le début, en UTC, de l'année 1970.

Sur les systèmes qui ne prennent pas en charge les fuseaux horaires, cette fonction se comportera comme si l'heure locale était Qt::UTC.

Notez que le fait de passer le minimum de qint64 (std::numeric_limits<qint64>::min()) à msecs entraînera un comportement indéfini.

Voir aussi setSecsSinceEpoch(), toMSecsSinceEpoch(), et fromMSecsSinceEpoch().

void QDateTime::setSecsSinceEpoch(qint64 secs)

Définit l'heure de la date pour qu'elle représente un moment un nombre donné, secs, de secondes après le début, en UTC, de l'année 1970.

Sur les systèmes qui ne prennent pas en charge les fuseaux horaires, cette fonction se comportera comme si l'heure locale était Qt::UTC.

Voir également setMSecsSinceEpoch(), toSecsSinceEpoch() et fromSecsSinceEpoch().

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

Fixe la partie temporelle de cette date à time. Si time n'est pas valide, cette fonction la fixe à minuit. Par conséquent, il est possible d'effacer n'importe quelle heure définie dans QDateTime en lui attribuant la valeur par défaut QTime:

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

Si date() et time décrivent un moment proche d'une transition pour la représentation temporelle de cette date, resolve contrôle la manière dont cette situation est résolue.

Note : Avant la version 6.7 de Qt XML, la version de cette fonction n'avait pas le paramètre resolve et n'avait donc aucun moyen de résoudre les ambiguïtés liées aux transitions.

Voir aussi time(), setDate(), et setTimeZone().

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

Définit le fuseau horaire utilisé dans cette date à toZone.

L'heure de la date peut faire référence à un moment différent dans le temps. Elle utilise la représentation temporelle de toZone, ce qui peut modifier la signification des valeurs inchangées date() et time().

Si toZone n'est pas valide, l'heure de la date ne le sera pas non plus. Dans le cas contraire, l'heure de cette date timeSpec() après l'appel correspondra à toZone.timeSpec().

Si date() et time() décrivent un moment proche d'une transition pour toZone, resolve contrôle la manière dont cette situation est résolue.

Note : Avant la version 6.7 de Qt XML, la version de cette fonction n'avait pas le paramètre resolve et n'avait donc aucun moyen de résoudre les ambiguïtés liées aux transitions.

Voir aussi timeRepresentation(), timeZone(), et Qt::TimeSpec.

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

Remplace cette date par other. Cette opération est très rapide et n'échoue jamais.

QTime QDateTime::time() const

Renvoie la partie temporelle de la date.

Voir aussi setTime(), date(), et timeRepresentation().

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

Renvoie un QTimeZone identifiant la manière dont ce datetime représente le temps.

Le timeSpec() du QTimeZone renvoyé coïncide avec celui de cette date ; s'il n'est pas Qt::TimeZone, le QTimeZone renvoyé est une représentation du temps. Lorsque timeSpec() est Qt::OffsetFromUTC, le fixedSecondsAheadOfUtc() de QTimeZone fournit le décalage. Lorsque timeSpec() est Qt::TimeZone, l'objet QTimeZone lui-même est la représentation complète de ce fuseau horaire.

Cette fonction a été introduite dans Qt 6.5.

Voir également timeZone(), setTimeZone() et QTimeZone::asBackendZone().

Qt::TimeSpec QDateTime::timeSpec() const

Renvoie la spécification temporelle de la date.

La représentation de l'heure est classée comme suit : heure locale, UTC, décalage fixe par rapport à UTC (sans indiquer le décalage) ou fuseau horaire (sans donner les détails de ce fuseau horaire). Équivalent à timeRepresentation().timeSpec().

Voir également setTimeZone(), timeRepresentation(), date() et time().

QTimeZone QDateTime::timeZone() const

Renvoie le fuseau horaire de la date.

Le résultat est identique à timeRepresentation().asBackendZone(). Dans tous les cas, le résultat timeSpec() est Qt::TimeZone.

Lorsque timeSpec() est Qt::LocalTime, le résultat décrit l'heure locale au moment où cette méthode a été appelée. Il ne reflétera pas les changements ultérieurs du fuseau horaire du système, même si le site QDateTime à partir duquel il a été obtenu le fait.

Voir également timeRepresentation(), setTimeZone(), Qt::TimeSpec et QTimeZone::asBackendZone().

QString QDateTime::timeZoneAbbreviation() const

Renvoie l'abréviation du fuseau horaire pour cette date.

La chaîne renvoyée dépend de timeSpec() :

Note : Il n'est pas garanti que l'abréviation soit unique, c'est-à-dire que différents fuseaux horaires peuvent avoir la même abréviation. Pour Qt::LocalTime et Qt::TimeZone, l'abréviation peut être localisée lorsqu'elle est renvoyée par le système hôte.

Voir aussi timeSpec() et QTimeZone::abbreviation().

CFDateRef QDateTime::toCFDate() const

Crée un CFDate à partir d'un QDateTime.

L'appelant est propriétaire de l'objet CFDate et est responsable de sa libération.

Voir aussi fromCFDate().

QDateTime QDateTime::toLocalTime() const

Renvoie une copie de cette date convertie en heure locale.

Le résultat représente le même moment dans le temps que, et est égal à, cette date.

Exemple :

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

Voir aussi toTimeZone(), toUTC() et toOffsetFromUtc().

qint64 QDateTime::toMSecsSinceEpoch() const

Renvoie la date sous la forme d'un nombre de millisecondes après le début, en UTC, de l'année 1970.

Sur les systèmes qui ne prennent pas en charge les fuseaux horaires, cette fonction se comportera comme si l'heure locale était Qt::UTC.

Le comportement de cette fonction est indéfini si la date stockée dans cet objet n'est pas valide. Cependant, pour toutes les dates valides, cette fonction renvoie une valeur unique.

Voir également toSecsSinceEpoch(), setMSecsSinceEpoch() et fromMSecsSinceEpoch().

NSDate *QDateTime::toNSDate() const

Crée un NSDate à partir d'un QDateTime.

L'objet NSDate est libéré automatiquement.

Voir aussi fromNSDate().

QDateTime QDateTime::toOffsetFromUtc(int offsetSeconds) const

Renvoie une copie de cette date convertie en un spécimen de Qt::OffsetFromUTC avec la valeur donnée offsetSeconds. Équivalent à toTimeZone(QTimeZone::fromSecondsAheadOfUtc(offsetSeconds)).

Si offsetSeconds est égal à 0, une date UTC sera renvoyée.

Le résultat représente le même moment dans le temps que, et est égal à, cette date.

Voir aussi offsetFromUtc() et toTimeZone().

qint64 QDateTime::toSecsSinceEpoch() const

Renvoie la date en tant que nombre de secondes après le début, en UTC, de l'année 1970.

Sur les systèmes qui ne prennent pas en charge les fuseaux horaires, cette fonction se comportera comme si l'heure locale était Qt::UTC.

Le comportement de cette fonction est indéfini si la date stockée dans cet objet n'est pas valide. Cependant, pour toutes les dates valides, cette fonction renvoie une valeur unique.

Voir également toMSecsSinceEpoch(), fromSecsSinceEpoch() et setSecsSinceEpoch().

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

Convertit cet objet datetime en un point temporel équivalent exprimé en millisecondes, en utilisant std::chrono::system_clock comme horloge.

Note : Cette fonction nécessite C++20.

Cette fonction a été introduite dans Qt 6.4.

Voir aussi fromStdTimePoint() et toMSecsSinceEpoch().

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

Convertit cet objet datetime en un point temporel équivalent exprimé en secondes, en utilisant std::chrono::system_clock comme horloge.

Note : Cette fonction nécessite C++20.

Cette fonction a été introduite dans Qt 6.4.

Voir aussi fromStdTimePoint() et toSecsSinceEpoch().

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

QString QDateTime::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, il n'y avait pas de paramètre cal et le calendrier grégorien était toujours utilisé. Voir QTime::toString() et QDate::toString() pour les spécificateurs pris en charge pour l'heure et la date, respectivement, dans le paramètre format.

Toute séquence de caractères entre guillemets simples sera incluse intégralement 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 le résultat. 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 QDateTime est le 21 mai 2001 14:13:09.120) :

FormatRésultat
dd.MM.yyyy21.05.2001
ddd MMMM d yyMar 21 mai 01
hh:mm:ss.zzz14:13:09.120
hh:mm:ss.z14:13:09.12
h:m:s ap2:13:9 pm

Si la date n'est pas valide, une chaîne vide sera renvoyée.

Remarque : Les noms des jours et des mois ainsi que les indicateurs AM/PM sont donnés en anglais (locale C). Pour obtenir les noms de jour et de mois localisés et les formes localisées de AM/PM, utilisez QLocale::system().toDateTime().

Voir aussi fromString(), QDate::toString(), QTime::toString() et QLocale::toString().

QString QDateTime::toString(QStringView format) const

Cette fonction surcharge QDateTime::toString().

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

Renvoie la date sous la forme d'une chaîne de caractères dans l'adresse format indiquée.

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 "Wed May 20 03:40:13 1998". 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, prenant la forme aaaa-MM-ddTHH:mm:ss[Z|±HH:mm], en fonction de timeSpec() de QDateTime. Si timeSpec() est Qt::UTC, Z sera ajouté à la chaîne ; si timeSpec() est Qt::OffsetFromUTC, le décalage en heures et en minutes par rapport à l'UTC sera ajouté à la chaîne. Pour inclure les millisecondes dans la date ISO 8601, utilisez format Qt::ISODateWithMs , qui correspond à yyyy-MM-ddTHH:mm:ss.zzz[Z|±H:mm].

Si format est Qt::RFC2822Date, la chaîne est formatée conformément à la RFC 2822.

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 QDateTime::toString().

Voir aussi fromString(), QDate::toString(), QTime::toString(), et QLocale::toString().

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

Cette fonction surcharge QDateTime::toString().

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

Renvoie une copie de cette date convertie au format timeZone.

Le résultat représente le même moment dans le temps que, et est égal à, cette datetime.

Le résultat décrit l'instant en termes de représentation temporelle de timeZone. Par exemple :

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

Si timeZone est invalide, l'heure de la date sera invalide. Dans le cas contraire, la date renvoyée par timeSpec() correspondra à timeZone.timeSpec().

Voir aussi timeRepresentation(), toLocalTime(), toUTC(), et toOffsetFromUtc().

QDateTime QDateTime::toUTC() const

Renvoie une copie de cette date convertie en UTC.

Le résultat représente le même moment dans le temps que, et est égal à, cette datetime.

Exemple :

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

Voir aussi toTimeZone(), toLocalTime() et toOffsetFromUtc().

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

Modifie cet objet datetime en y ajoutant la valeur donnée duration. L'objet mis à jour sera plus tardif si duration est positif, ou plus précoce s'il est négatif.

Si cette date n'est pas valide, cette fonction n'a aucun effet.

Renvoie une référence à cet objet datetime.

Cette fonction a été introduite dans Qt 6.4.

Voir aussi addMSecs().

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

Modifie cet objet datetime en soustrayant la valeur donnée duration. L'objet mis à jour sera antérieur si duration est positif, ou postérieur s'il est négatif.

Si cette date n'est pas valide, cette fonction n'a aucun effet.

Renvoie une référence à cet objet datetime.

Cette fonction a été introduite dans Qt 6.4.

Voir aussi addMSecs.

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

Copie la date other dans this et renvoie cette copie.

Non-membres apparentés

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

Renvoie true si lhs est différent de rhs; sinon, renvoie false.

Deux dates utilisant des représentations temporelles différentes peuvent avoir des décalages différents par rapport à UTC. Dans ce cas, elles peuvent être comparées de manière équivalente même si leurs date() et time() diffèrent, si cette différence correspond à la différence de décalage par rapport à l'UTC. Si les adresses date() et time() coïncident, celle dont le décalage par rapport à l'UTC est le plus élevé est inférieure (antérieure) à celle dont le décalage est le plus faible. Par conséquent, les dates ne sont que faiblement ordonnées.

Depuis la version 5.14, toutes les dates invalides sont équivalentes et inférieures à toutes les dates valides.

Voir aussi operator==().

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

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

Renvoie un objet QDateTime contenant une date duration postérieure de quelques millisecondes à dateTime (ou antérieure si duration est négatif).

Si dateTime est invalide, une date invalide sera renvoyée.

Ces fonctions ont été introduites dans Qt 6.4.

Voir aussi addMSecs().

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

Renvoie le nombre de millisecondes entre lhs et rhs. Si lhs est antérieur à rhs, le résultat sera négatif.

Retourne 0 si l'une ou l'autre des dates n'est pas valide.

Cette fonction a été introduite dans Qt 6.4.

Voir aussi msecsTo().

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

Renvoie un objet QDateTime contenant une date duration antérieure de quelques millisecondes à dateTime (ou postérieure si duration est négatif).

Si dateTime est invalide, une date invalide sera renvoyée.

Cette fonction a été introduite dans Qt 6.4.

Voir aussi addMSecs().

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

Renvoie true si lhs est antérieur à rhs; sinon, renvoie false.

Deux dates utilisant des représentations temporelles différentes peuvent avoir des décalages différents par rapport à UTC. Dans ce cas, elles peuvent être comparées de manière équivalente même si leurs date() et time() diffèrent, si cette différence correspond à la différence de décalage par rapport à l'UTC. Si les adresses date() et time() coïncident, celle dont le décalage par rapport à l'UTC est le plus élevé est inférieure (antérieure) à celle dont le décalage est le plus faible. Par conséquent, les dates ne sont que faiblement ordonnées.

Depuis la version 5.14, toutes les dates invalides sont équivalentes et inférieures à toutes les dates valides.

Voir aussi operator==().

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

Écrit dateTime dans le flux out.

Voir aussi Serializing Qt Data Types (Sérialisation des types de données Qt).

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

Renvoie true si lhs est antérieur ou égal à rhs; sinon, renvoie false.

Deux dates utilisant des représentations temporelles différentes peuvent avoir des décalages différents par rapport à UTC. Dans ce cas, elles peuvent être comparées de manière équivalente même si leurs date() et time() diffèrent, si cette différence correspond à la différence de décalage par rapport à l'UTC. Si les adresses date() et time() coïncident, celle dont le décalage par rapport à l'UTC est le plus élevé est inférieure (antérieure) à celle dont le décalage est le plus faible. Par conséquent, les dates ne sont que faiblement ordonnées.

Depuis la version 5.14, toutes les dates invalides sont équivalentes et inférieures à toutes les dates valides.

Voir aussi operator==().

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

Renvoie true si lhs représente le même moment dans le temps que rhs; sinon, renvoie false.

Deux dates utilisant des représentations temporelles différentes peuvent avoir des décalages différents par rapport à UTC. Dans ce cas, elles peuvent être comparées de manière équivalente même si leurs date() et time() diffèrent, si cette différence correspond à la différence de décalage par rapport à l'UTC. Si les adresses date() et time() coïncident, celle dont le décalage par rapport à l'UTC est le plus élevé est inférieure (antérieure) à celle dont le décalage est le plus faible. Par conséquent, les dates ne sont que faiblement ordonnées.

Depuis la version 5.14, toutes les dates invalides sont équivalentes et inférieures à toutes les dates valides.

Voir aussi operator!=(), operator<(), operator<=(), operator>(), et operator>=().

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

Renvoie true si lhs est postérieur à rhs; sinon, renvoie false.

Deux dates utilisant des représentations temporelles différentes peuvent avoir des décalages différents par rapport à UTC. Dans ce cas, elles peuvent être comparées de manière équivalente même si leurs date() et time() diffèrent, si cette différence correspond à la différence de décalage par rapport à l'UTC. Si les adresses date() et time() coïncident, celle dont le décalage par rapport à l'UTC est le plus élevé est inférieure (antérieure) à celle dont le décalage est le plus faible. Par conséquent, les dates ne sont que faiblement ordonnées.

Depuis la version 5.14, toutes les dates invalides sont équivalentes et inférieures à toutes les dates valides.

Voir aussi operator==().

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

Renvoie true si lhs est postérieur ou égal à rhs; sinon, renvoie false.

Deux dates utilisant des représentations temporelles différentes peuvent avoir des décalages différents par rapport à UTC. Dans ce cas, elles peuvent être comparées de manière équivalente même si leurs date() et time() diffèrent, si cette différence correspond à la différence de décalage par rapport à l'UTC. Si les adresses date() et time() coïncident, celle dont le décalage par rapport à l'UTC est le plus élevé est inférieure (antérieure) à celle dont le décalage est le plus faible. Par conséquent, les dates ne sont que faiblement ordonnées.

Depuis la version 5.14, toutes les dates invalides sont équivalentes et inférieures à toutes les dates valides.

Voir aussi operator==().

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

Lit une date à partir du flux in dans dateTime.

Voir aussi Serializing Qt Data Types (Sérialisation des types de données 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.