Adloun

Vue : construire une application web (école d'ingénieur) · Chapitre 4 · Exercice de TD

Date de retrait

Formulaires · niveau 3 (difficile)

Énoncé

Un champ type="date" permet de choisir le jour de retrait, au plus tôt le lendemain. Quel est le type de la donnée reliée ? Afficher la date choisie en toutes lettres (« jeudi 15 octobre »). Attention au fuseau horaire : pourquoi new Date("2026-10-15") est-il un mauvais point de départ ?

Corrigé


<div id="app">
  <div>
    <p><label>Date de retrait <input v-model="date" type="date" :min="demain"></label></p>
    <p>{{ JSON.stringify(date) }} ({{ typeof date }}) — {{ date ? lisible(date) : "aucune date" }}</p>
  </div>
</div>

const { createApp, ref } = Vue;

function isoLocal(d) {
  const deux = (n) => String(n).padStart(2, "0");
  return `${d.getFullYear()}-${deux(d.getMonth() + 1)}-${deux(d.getDate())}`;
}

createApp({
  setup() {
    const aujourdhui = new Date();
    const demain = isoLocal(new Date(aujourdhui.getFullYear(), aujourdhui.getMonth(), aujourdhui.getDate() + 1));
    const date = ref("");
    function lisible(iso) {
      return new Date(`${iso}T12:00`).toLocaleDateString("fr-FR", { weekday: "long", day: "numeric", month: "long" });
    }
    return { date, demain, lisible };
  },
}).mount("#app");

Avant et après le choix du 15 octobre 2026 :


"" (string) — aucune date
"2026-10-15" (string) — jeudi 15 octobre

La donnée est une chaîne au format ISO (AAAA-MM-JJ), vide tant que rien n'est choisi, et c'est aussi ce qu'attend l'attribut min. new Date("2026-10-15") interprète une date seule comme minuit en temps universel : à Montréal, c'est encore le 14 octobre, et l'affichage serait faux d'un jour. On ajoute une heure locale (T12:00), et l'on construit le lendemain à partir des composantes locales.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →