Fuseaux horaires avec zoneinfo
Manipuler des datetimes prenant en compte le fuseau horaire
Fuseaux horaires avec zoneinfo est une leçon Python Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Python Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Python Academy comprend 4 leçons au total.
Dates-heures naïves et avec fuseau
Une date-heure naïve ne contient aucune information de fuseau horaire — elle indique simplement « 14 h », sans préciser de quel 14 h il s’agit. Une date-heure associée à un fuseau contient un fuseau horaire et désigne donc un instant précis partout dans le monde.
Les dates-heures associées à un fuseau évitent les erreurs lorsque les utilisateurs se trouvent dans plusieurs régions.
from datetime import datetime
naive = datetime(2026, 5, 30, 14, 0)
print(naive.tzinfo)Importer les informations de fuseau
Python 3.9+ fournit zoneinfo dans sa bibliothèque standard. Importez ZoneInfo et transmettez un nom de fuseau horaire IANA tel que 'Europe/Istanbul' ou 'America/New_York'.
from zoneinfo import ZoneInfo
tz = ZoneInfo('Europe/Istanbul')
print(tz)Créer une date-heure avec fuseau
Transmettez tzinfo=ZoneInfo(...) lors de la construction d’une date-heure pour l’associer à un fuseau. Elle sait alors exactement à quelle région elle appartient.
from datetime import datetime
from zoneinfo import ZoneInfo
d = datetime(2026, 5, 30, 14, 0, tzinfo=ZoneInfo('Europe/Istanbul'))
print(d)
print(d.tzinfo)UTC comme référence
UTC est la référence universelle. Utilisez datetime.now(ZoneInfo('UTC')) pour obtenir l’heure UTC actuelle associée à un fuseau. Stocker les heures en UTC est une bonne pratique.
from datetime import datetime
from zoneinfo import ZoneInfo
utc_now = datetime(2026, 5, 30, 11, 0, tzinfo=ZoneInfo('UTC'))
print(utc_now)Convertir entre les fuseaux
.astimezone(tz) convertit une date-heure associée à un fuseau vers un autre fuseau horaire, en ajustant l’heure pour qu’elle désigne toujours le même instant.
from datetime import datetime
from zoneinfo import ZoneInfo
utc = datetime(2026, 5, 30, 11, 0, tzinfo=ZoneInfo('UTC'))
ist = utc.astimezone(ZoneInfo('Europe/Istanbul'))
print('UTC:', utc)
print('Istanbul:', ist)Même instant, horloges différentes
Après la conversion, les heures affichées diffèrent, mais l’instant sous-jacent est identique. Comparer deux dates-heures associées à un fuseau compare les instants réels, et non les chiffres affichés.
from datetime import datetime
from zoneinfo import ZoneInfo
utc = datetime(2026, 5, 30, 11, 0, tzinfo=ZoneInfo('UTC'))
ny = utc.astimezone(ZoneInfo('America/New_York'))
print(utc == ny)Lire le décalage par rapport à UTC
La méthode .utcoffset() renvoie une timedelta indiquant l’écart entre le fuseau et UTC à cet instant, y compris toute correction liée à l’heure d’été.
from datetime import datetime
from zoneinfo import ZoneInfo
d = datetime(2026, 5, 30, 14, 0, tzinfo=ZoneInfo('Europe/Istanbul'))
print('Offset:', d.utcoffset())L’heure d’été est gérée pour vous
zoneinfo utilise la base de données des fuseaux horaires du système et sait donc quand l’heure d’été commence et se termine. Un même fuseau peut avoir différents décalages au cours de l’année.
from datetime import datetime
from zoneinfo import ZoneInfo
winter = datetime(2026, 1, 15, 12, 0, tzinfo=ZoneInfo('America/New_York'))
summer = datetime(2026, 7, 15, 12, 0, tzinfo=ZoneInfo('America/New_York'))
print('Winter:', winter.utcoffset())
print('Summer:', summer.utcoffset())Associer un fuseau à une heure naïve
Si une date-heure naïve représente une heure locale connue, associez-lui un fuseau avec .replace(tzinfo=...). Cela l’étiquette sans modifier l’heure affichée.
from datetime import datetime
from zoneinfo import ZoneInfo
naive = datetime(2026, 5, 30, 9, 0)
aware = naive.replace(tzinfo=ZoneInfo('Europe/Istanbul'))
print(aware)Éviter de mélanger les dates-heures
Vous ne pouvez pas soustraire ni comparer une date-heure naïve avec une date-heure associée à un fuseau : Python lève une TypeError. Gardez vos dates-heures cohérentes dans tout le programme.
from datetime import datetime
from zoneinfo import ZoneInfo
naive = datetime(2026, 5, 30, 9, 0)
aware = datetime(2026, 5, 30, 9, 0, tzinfo=ZoneInfo('UTC'))
try:
print(aware - naive)
except TypeError as e:
print('Error:', e)Formater avec le fuseau
Le code %Z affiche le nom du fuseau horaire et %z affiche le décalage numérique lorsque vous formatez une date-heure associée à un fuseau.
from datetime import datetime
from zoneinfo import ZoneInfo
d = datetime(2026, 5, 30, 14, 0, tzinfo=ZoneInfo('Europe/Istanbul'))
print(d.strftime('%Y-%m-%d %H:%M %Z %z'))Vérification rapide
Quelle est la différence essentielle entre une date-heure naïve et une date-heure associée à un fuseau ?
Récapitulatif : fuseaux horaires
Résumé :
- Les dates-heures naïves ne contiennent pas d’informations de fuseau horaire ; celles associées à un fuseau contiennent
tzinfo. - Utilisez
ZoneInfo('Region/City')depuis le modulezoneinfo. .astimezone()convertit une date-heure associée à un fuseau vers un autre fuseau.zoneinfogère automatiquement l’heure d’été, et vous ne devez jamais mélanger les dates-heures naïves avec celles associées à un fuseau.
from datetime import datetime
from zoneinfo import ZoneInfo
utc = datetime(2026, 5, 30, 12, 0, tzinfo=ZoneInfo('UTC'))
print(utc.astimezone(ZoneInfo('Europe/Istanbul')))Questions Fréquemment Posées
La leçon « Fuseaux horaires avec zoneinfo » est-elle gratuite ?
Oui — le texte complet de « Fuseaux horaires avec zoneinfo » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Python Academy, passe à CoddyKit PRO. Le cours Python Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Fuseaux horaires avec zoneinfo » ?
Manipuler des datetimes prenant en compte le fuseau horaire Tu pratiques Python Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Python Academy ?
Aucune expérience préalable n'est requise. Python Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Fuseaux horaires avec zoneinfo » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Python Academy ?
Oui. Chaque leçon Python Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- date, time, datetime
- Timedelta et calculs
- Mise en forme et analyse
- Fuseaux horaires avec zoneinfo