Pourquoi ISO 8601 plutôt qu'un autre système ?
ISO 8601 est la norme internationale pour les numéros de semaine. Il définit clairement quand une semaine commence (lundi) et comment compter la semaine 1.
Voyez en direct quelle semaine de l’année nous sommes au Canada, avec le numéro de semaine actuel et les dates de début et de fin de la semaine.
15 langages, prêts à coller. Calculez le numéro de semaine ISO 8601 et l'année-semaine ISO en JavaScript, Python, SQL, Excel, et plus.
ECMAScript pur, sans dépendance. Retourne 1–53.
function isoWeek(date) {
const d = new Date(Date.UTC(
date.getFullYear(),
date.getMonth(),
date.getDate(),
));
// Thursday in current week decides the year.
d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay() || 7));
const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
return Math.ceil(((d - yearStart) / 86400000 + 1) / 7);
}
console.log(isoWeek(new Date())); // current ISO week numberRetourne le numéro de semaine ISO et l'année-semaine ISO.
// Intl.DateTimeFormat doesn't expose ISO weeks; use the formula above.
export function isoWeek(date: Date): number {
const d = new Date(Date.UTC(
date.getFullYear(),
date.getMonth(),
date.getDate(),
));
d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay() || 7));
const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
return Math.ceil(((d.getTime() - yearStart.getTime()) / 86_400_000 + 1) / 7);
}
export function isoWeekYear(date: Date): number {
const d = new Date(Date.UTC(
date.getFullYear(),
date.getMonth(),
date.getDate(),
));
d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay() || 7));
return d.getUTCFullYear();
}isocalendar() retourne un tuple ISO 8601 (année, semaine, jour) depuis Python 3.9.
from datetime import date
# Python 3.9+: date.isocalendar() returns a named tuple
year, week, weekday = date.today().isocalendar()
print(f"{year}-W{week:02d}-{weekday}")DateTime::format avec `o` (année ISO) et `W` (semaine ISO).
<?php
$today = new DateTime("now", new DateTimeZone("America/Toronto"));
echo $today->format("o-\WW"); // ISO week-year + ISO week, e.g. 2026-W18java.time.WeekFields.ISO est l'accesseur conforme à la norme.
import java.time.LocalDate;
import java.time.temporal.WeekFields;
LocalDate today = LocalDate.now();
int week = today.get(WeekFields.ISO.weekOfWeekBasedYear());
int year = today.get(WeekFields.ISO.weekBasedYear());
System.out.printf("%d-W%02d%n", year, week);System.Globalization.ISOWeek (.NET Core 3.0+).
using System.Globalization;
var today = DateTime.UtcNow;
int week = ISOWeek.GetWeekOfYear(today);
int year = ISOWeek.GetYear(today);
Console.WriteLine($"{year}-W{week:D2}");time.Time.ISOWeek retourne (année, semaine) selon ISO 8601.
package main
import (
"fmt"
"time"
)
func main() {
year, week := time.Now().UTC().ISOWeek()
fmt.Printf("%d-W%02d\n", year, week)
}chrono::NaiveDate::iso_week retourne la semaine ISO.
use chrono::{Datelike, Utc};
fn main() {
let now = Utc::now().date_naive();
let iso = now.iso_week();
println!("{}-W{:02}", iso.year(), iso.week());
}Date#cweek et Date#cwyear (norme ISO 8601).
require "date"
puts Date.today.cweek # ISO 8601 week number
puts Date.today.cwyear # ISO 8601 week-yearPostgres EXTRACT WEEK suit ISO 8601 par défaut.
SELECT
EXTRACT(ISOYEAR FROM CURRENT_DATE) AS iso_year,
EXTRACT(WEEK FROM CURRENT_DATE) AS iso_week;Mode 3 force ISO 8601 (sem. 1 = première avec au moins 4 jours).
SELECT
YEARWEEK(CURRENT_DATE, 3) AS iso_year_week, -- mode 3 = ISO 8601
WEEK(CURRENT_DATE, 3) AS iso_week;DATEPART(ISO_WEEK, ...) ajouté à SQL Server 2008.
SELECT
DATEPART(ISO_WEEK, GETUTCDATE()) AS iso_week,
DATEPART(YEAR, DATEADD(DAY, 26 - DATEPART(ISO_WEEK, GETUTCDATE()), GETUTCDATE())) AS iso_year;ISOWEEK / ISOYEAR du SQL standard.
SELECT
EXTRACT(ISOWEEK FROM CURRENT_DATE()) AS iso_week,
EXTRACT(ISOYEAR FROM CURRENT_DATE()) AS iso_year;Excel 2013+ inclut ISOWEEKNUM. Versions antérieures: formule manuelle.
=ISOWEEKNUM(TODAY())
=YEAR(TODAY()-WEEKDAY(TODAY(),3)+3) ' ISO week-year
="W" & TEXT(ISOWEEKNUM(TODAY()),"00")ISOWEEKNUM pris en charge nativement.
=ISOWEEKNUM(TODAY())
=YEAR(TODAY()-WEEKDAY(TODAY(),3)+3)ISO 8601 est la norme internationale pour les numéros de semaine. Il définit clairement quand une semaine commence (lundi) et comment compter la semaine 1.
Java, C# (>= .NET Core 3), Python (>= 3.9), Go, Ruby, Rust avec chrono, et la plupart des SGBD modernes (Postgres, MySQL avec mode 3, SQL Server 2008+, BigQuery).
Excel WEEKNUM utilise par défaut le système américain. Utilisez ISOWEEKNUM (Excel 2013+) ou la formule lundi-jeudi pour obtenir le résultat ISO 8601.