Aller au contenu principal
    Développeur5 min de lecture

    IANA tz database : la base mondiale des fuseaux horaires

    Europe/Paris, America/New_York, Asia/Tokyo… La base IANA tz est la source unique de tous les fuseaux horaires utilisés en informatique.

    La IANA tz database (aussi appelée tzdata, zoneinfo ou Olson database) est la source de référence mondiale pour les fuseaux horaires. Maintenue depuis 1986, elle contient l'historique complet des changements de fuseau de tous les pays. Tous les systèmes d'exploitation et bibliothèques modernes l'utilisent.

    Identifiants : Continent/Ville

    Chaque fuseau est identifié par un nom au format Continent/Ville :

    • Europe/Paris
    • America/New_York
    • Asia/Tokyo
    • Pacific/Auckland
    • Africa/Casablanca

    La ville est choisie comme représentative du fuseau, pas comme capitale. America/Argentina/Buenos_Aires couvre la moitié de l'Argentine, etc.

    Pourquoi pas juste « UTC+1 » ?

    Un offset comme UTC+1 ne dit pas si le fuseau applique l'heure d'été, ni quand le changement s'effectue. Europe/Paris est UTC+1 en hiver et UTC+2 en été ; Europe/Madrid a la même règle ; Africa/Casablanca est UTC+1 en hiver mais avec des règles DST différentes selon Ramadan. La tz database encode ces règles.

    Contenu de la base

    • ~600 zones identifiées par Continent/Ville.
    • Pour chaque zone : historique des offsets, dates de changement DST, abréviations (CEST, EST…), corrections historiques (ex. France a changé de fuseau 7 fois au XXe siècle).

    Mises à jour : 4 à 8 par an

    Les changements politiques (un pays décide de supprimer le DST, fusionne deux fuseaux) déclenchent une release tzdata. Format de version : 2026a, 2026b, etc. Vos systèmes (Linux, Java, Python, Node.js) doivent être mis à jour pour intégrer ces changements.

    Utilisation en code

    // JavaScript (Intl natif)
    new Intl.DateTimeFormat('fr-FR', {
      timeZone: 'Asia/Tokyo',
      dateStyle: 'full',
      timeStyle: 'short',
    }).format(new Date());
    
    // Python
    from zoneinfo import ZoneInfo
    from datetime import datetime
    datetime.now(ZoneInfo("Europe/Paris"))
    
    // Java
    ZonedDateTime.now(ZoneId.of("America/New_York"));
    
    // PostgreSQL
    SELECT now() AT TIME ZONE 'Asia/Tokyo';

    Voir tous les pays et leurs fuseaux

    Erreurs classiques

    • Utiliser EST, CET, PST — ces abréviations sont ambiguës (EST = Eastern Standard Time US OU Australian Eastern Standard Time). Toujours préférer America/New_York ou Australia/Sydney.
    • Stocker l'offset au lieu de la zone — un +01:00 ne saura pas appliquer le DST automatiquement.
    • Hardcoder les règles DST — elles changent. Toujours déléguer à la lib OS / runtime.

    Pour aller plus loin