Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
Le constructeur Date() crée des objets Date. Lorsqu'il est appelé en tant que fonction, il retourne une chaîne de caractères représentant l'heure courante.
Note : Date() peut être appelé avec ou sans new, mais avec des effets différents. Voir Valeur de retour.
Il existe cinq formes basiques pour utiliser le constructeur Date() :
Lorsqu'aucun paramètre n'est fourni, le nouvel objet Date ainsi créé représente la date et heure courante du moment de l'instanciation.
Une valeur entière représentant le timestamp (le nombre de millisecondes écoulées depuis minuit au début du 1er janvier 1970, UTC — c'est‑à‑dire l'epoch).
Une chaîne de caractères représentant une date, analysée et interprétée selon le même algorithme que celui implémenté par Date.parse(). Voir format de chaîne de caractères date-heure pour les mises en garde concernant l'utilisation de différents formats.
Un objet Date existant. Cela crée effectivement une copie de l'objet Date existant avec la même date et la même heure. Cela équivaut à new Date(dateObject.valueOf()), sauf que la méthode valueOf() n'est pas appelée.
Lorsqu'un paramètre est passé au constructeur Date(), les instances de Date sont traitées de manière spécifique. Toutes les autres valeurs sont converties en primitives. Si le résultat est une chaîne de caractères, elle sera analysée comme une chaîne de caractères de date. Sinon, la primitive résultante est convertie en nombre et traitée comme un timestamp.
Soient au moins une année et un mois, cette forme de Date() renvoie un objet Date dont les valeurs des composantes (année, mois, jour, heure, minute, seconde, et milliseconde) proviennent des paramètres suivants. Chaque champ manquant prendra la valeur la plus basse possible (soit 1 pour le paramètre day et 0 pour les autres). Les valeurs des paramètres sont évaluées selon le fuseau horaire local et pas UTC. Date.UTC() accepte des paramètres similaires mais interprète les composantes comme UTC et retourne un timestamp.
Si un paramètre dépasse ses bornes définies, il est « reporté ». Par exemple, si un monthIndex supérieur à 11 est passé, ces mois supplémentaires feront augmenter l'année ; si un minutes supérieur à 59 est passé, les hours augmenteront en conséquence, etc. Ainsi, new Date(1990, 12, 1) retournera le 1er janvier 1991 ; new Date(2020, 5, 19, 25, 65) retournera 2:05 le 20 juin 2020.
De même, si un paramètre est inférieur à sa borne minimale, il « emprunte » à la position supérieure. Par exemple, new Date(2020, 5, 0) retournera le 31 mai 2020.
yearUne valeur entière représentant l'année. Les valeurs de 0 à 99 correspondent aux années 1900 à 1999. Les autres valeurs correspondent à l'année indiquée. Voir l'exemple.
monthIndexUne valeur entière représentant le mois, en commençant à 0 pour janvier, jusqu'à 11 pour décembre.
day FacultatifUne valeur entière pour le jour du mois. La valeur par défaut est 1.
hours FacultatifUne valeur entière entre 0 et 23 représentant l'heure du jour. La valeur par défaut est 0.
minutes FacultatifUne valeur entière représentant le nombre de minutes dans l'heure. La valeur par défaut est 0.
seconds FacultatifUne valeur entière représentant le nombre de secondes dans la minute. La valeur par défaut est 0.
milliseconds FacultatifUne valeur entière représentant le nombre de millisecondes dans la seconde. La valeur par défaut est 0.
Appeler new Date() (le constructeur Date()) retourne un objet Date. Si on l'appelle avec une chaîne de caractères invalide pour une date, ou si la date à construire a un timestamp inférieur à -8,640,000,000,000,000 ou supérieur à 8,640,000,000,000,000 millisecondes, il retourne une date invalide (un objet Date dont la méthode toString() retourne "Invalid Date" et la méthode valueOf() retourne NaN).
Appeler la fonction Date() (sans le mot-clé new) retourne une représentation en chaîne de caractères de la date et de l'heure courante, exactement comme le fait new Date().toString(). Tout argument passé à un appel de fonction Date() (sans le mot-clé new) est ignoré ; que ce soit une chaîne de caractères invalide pour une date — ou même n'importe quel objet ou autre primitive comme argument — cela retournera toujours une représentation en chaîne de caractères de la date et de l'heure courante.
Pour offrir une protection contre les attaques par mesure de temps et le profilage d'empreinte, la précision de new Date() peut être arrondie selon les paramètres du navigateur. Dans Firefox, la préférence privacy.reduceTimerPrecision est activée par défaut et la valeur par défaut est 2 ms. Vous pouvez aussi activer privacy.resistFingerprinting, auquel cas la précision sera de 100 ms ou la valeur de privacy.resistFingerprinting.reduceTimerPrecision.microseconds, selon la plus grande des deux.
Par exemple, avec une précision temporelle réduite, le résultat de new Date().getTime() sera toujours un multiple de 2, ou un multiple de 100 (ou de privacy.resistFingerprinting.reduceTimerPrecision.microseconds) si privacy.resistFingerprinting est activé.
Les exemples qui suivent illustrent différentes façons de créer des dates JavaScript :
Si le constructeur Date() est appelé avec un paramètre qui n'est pas une instance de Date, il sera converti en primitive puis vérifié pour savoir s'il s'agit d'une chaîne de caractères. Par exemple, new Date(undefined) est différent de new Date() :
Cela s'explique par le fait que undefined est déjà une primitive mais pas une chaîne de caractères, il sera donc converti en nombre, ce qui donne NaN et donc pas un timestamp valide. À l'inverse, null sera converti en 0.
Arrays would be coerced to a string via Array.prototype.toString(), which joins the elements with commas. However, the resulting string for any array with more than one element is not a valid ISO 8601 date string, so its parsing behavior would be implementation-defined. Do not pass arrays to the Date() constructor.
| ECMAScript® 2027 Language Specification # sec-date-constructor |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 20 févr. 2026 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.