Dates en JavaScript
Deux mots se ressemblent et ne disent pas la même chose : le quantième et le jour de la semaine. Pour les séparer sans changer d’exemple à chaque ligne, on garde un seul matin. La salle de lecture ouvre le jeudi 14 mars 2024 à 9 h 30. Ce matin-là ne doit pas glisser vers « maintenant » si tu recharges la page.
Tu ne cherches plus dans un tableau
Là, une recherche te rendait une case, −1, oui ou non, ou le timbre lui-même. Une date ne se trouve pas de cette façon. Tu poses l’instant, puis tu lui poses une question à la fois. La question ne fait pas avancer l’horloge.
Les jumeaux de ce jeudi
Lis le tableau comme des paires qu’on échange trop souvent en classe, sur ce jeudi-là seulement.
📊 Les paires de ce jeudi
| Méthode | La question réelle | Le chiffre de ce matin | Le jumeau avec lequel on le confond |
|---|---|---|---|
getFullYear |
l’année en entier | 2024 |
l’année sur deux chiffres |
getMonth |
la place de mars dans l’objet | 2 |
le 3 du calendrier mural |
getDate |
le quantième | 14 |
le jeudi |
getDay |
la place du jeudi dans la semaine | 4 |
le 14 |
getHours |
l’heure de 0 à 23 | 9 |
une étiquette « matin » |
getMinutes |
la minute | 30 |
demander 30 à l’heure |
Janvier part à 0, donc février est 1 et mars est 2. Dimanche part à 0, donc lundi 1, mardi 2, mercredi 3, jeudi 4. Le zéro du tableau était une case. Ici, le zéro ouvre l’année ou la semaine.
L’année d’abord, le mois attend
Rien que la tête du constructeur. 2024 y est entré entier, et cette ligne le garde entier.
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getFullYear());
Tu obtiens 2024, celui que tu as mis en premier. Le 2 du mois ne s’imprime pas sur cette ligne, et pourtant il veut déjà dire mars. 24 est un raccourci d’écriture, pas cette lecture.
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getMonth());
Le 2 n’est pas un trou. Janvier a pris le 0, mars tombe donc ici. Le cran vers « troisième mois » se fera plus loin, dans la phrase affichée. Pour l’instant tu laisses ce 2 tranquille.
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getDate());
console.log(opened.getDay());
14 est le quantième, 4 est jeudi si dimanche vaut 0. Ils se suivent parce que tu as posé les deux questions. Ce n’est pas la même question dite deux fois. Croiser les méthodes, c’est prendre une date pour un nom de jour, ou l’inverse.
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getHours());
console.log(opened.getMinutes());
9 d’abord, 30 ensuite. Les heures partent de 0 à minuit et montent jusqu’à 23, donc ce 9 est le matin sans drapeau à part. Le 30 est la minute. Le demander à l’heure, c’est interroger la mauvaise aiguille.
let opened = new Date(2024, 2, 14, 9, 30);
let visit = new Date(2024, 2, 20, 15, 0);
console.log(visit.getTime() > opened.getTime());
console.log(visit.getDate());
La visite tombe le 20 mars à 15 h, donc après l’ouverture. getTime transforme chaque instant en un nombre qu’on peut ranger du plus ancien au plus récent, et la comparaison vaut true. La ligne d’après est 20, le jour de cette visite. === ne parle pas d’ordre dans le temps. Il demande seulement si les deux noms désignent un seul objet. Ici tu en as construit deux.
La phrase pour qui ne lit pas le code
L’année et le jour restent tels quels. Le mois, tu l’écris comme sur le calendrier mural.
<!DOCTYPE html>
<html>
<head>
<title>dates — page</title>
</head>
<body>
<p id="when">…</p>
<script>
let opened = new Date(2024, 2, 14, 9, 30);
let year = opened.getFullYear();
let displayMonth = opened.getMonth() + 1;
let day = opened.getDate();
let box = document.getElementById("when");
box.textContent = year + "-" + displayMonth + "-" + day;
</script>
</body>
</html>
Le paragraphe affiche 2024-3-14. Si tu redemandes le mois à l’objet, il est encore à 2. Le décalage est dans la phrase montrée à l’œil. L’instant gardé n’a pas bougé.
Six points où ce jeudi doit coller
Tu vérifies l’image, tu ne devines pas.
- L’année entière est 2024, pas 24
- Dans l’objet, mars est 2
- Le 14 vient de
getDate, le 4 du jeudi vient degetDay - L’heure est 9, la minute est 30
- La visite du 20 est plus tardive, la comparaison vaut true, et ce jour-là est 20
- La phrase du paragraphe est
2024-3-14, et l’objet garde le mois à 2
Ça s’exécute, et le jour est faux
Aucune alerte. Seulement un mois ou un chiffre qui n’est pas celui que tu croyais.
- Tu passes 3 à
new Dateen visant mars, et tu obtiens avril - Tu lis 2 comme février, ou tu exiges 3 de
getMonth - Tu vas chercher 14 avec
getDay - Tu vas chercher le 4 du jeudi avec
getDate - Tu décides quel instant est plus tard avec
=== - Tu appelles
new Date()sans nombres, et chaque rechargement pose un autre matin
Ce qui doit rester quand tu fermes la page
- Mars est 2 parce que janvier est 0
- Le quantième, c’est
getDate - Le jour de la semaine, c’est
getDay, et dimanche vaut 0 - Deux instants se rangent avec le nombre de
getTime - La phrase lue par quelqu’un écrit le mois un cran plus loin que l’objet, et l’objet reste à 2
- Ensuite vient l’objet Math
🧠 Testez Vos Connaissances
Testez Vos Connaissances
Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet
📝 Instructions
- Lisez chaque question attentivement
- Sélectionnez la meilleure réponse pour chaque question
- Vous pouvez refaire le quiz autant de fois que vous le souhaitez
- Votre progression sera affichée en haut