Retour à l'outil
*

Numéro de semaine ISO en JavaScript

Mis à jour : mai 2026

JavaScript ne fournit pas de fonction native pour le numéro de semaine ISO. Il faut donc appliquer l'algorithme ISO 8601, idéalement en UTC pour éviter les décalages liés aux fuseaux horaires et au passage à l'heure d'été.

Comparer le résultat

Même logique que l'outil Flowfiles

Fonction date vers semaine ISO

function isoWeekOf(date) { const d = new Date(Date.UTC( date.getFullYear(), date.getMonth(), date.getDate() )); const day = d.getUTCDay() || 7; d.setUTCDate(d.getUTCDate() + 4 - day); const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1)); const week = Math.ceil((((d - yearStart) / 86400000) + 1) / 7); return { year: d.getUTCFullYear(), week }; } console.log(isoWeekOf(new Date(2026, 4, 29))); // { year: 2026, week: 22 }

Le passage par le jeudi de la semaine permet de retrouver l'année ISO. Ensuite, l'écart avec le 1er janvier donne le numéro de semaine.

Convertir une semaine ISO en lundi

function isoWeekStart(isoYear, isoWeek) { const jan4 = new Date(Date.UTC(isoYear, 0, 4)); const jan4Day = jan4.getUTCDay() || 7; const monday = new Date(jan4); monday.setUTCDate(jan4.getUTCDate() - (jan4Day - 1)); monday.setUTCDate(monday.getUTCDate() + (isoWeek - 1) * 7); return monday; }

Ajoutez six jours au lundi obtenu pour connaître le dimanche de fin de semaine.

Pourquoi utiliser UTC ?

Un calcul local peut être perturbé par les changements d'heure ou par une date construite à minuit dans un fuseau horaire donné. En convertissant les dates en UTC, on travaille uniquement sur des jours calendaires et on évite les erreurs d'une journée.