objectif
Convertir une date aware UTC en Europe/Paris proprement.
code minimal
from datetime import datetime, timezone
from zoneinfo import ZoneInfo
dt = datetime(2025, 1, 1, 12, 0, 0, tzinfo=timezone.utc)
paris = dt.astimezone(ZoneInfo("Europe/Paris"))
print(paris.hour == 13 and paris.tzinfo.key == "Europe/Paris") # attendu: True
utilisation
from datetime import datetime, timezone
from zoneinfo import ZoneInfo
now_paris = datetime.now(timezone.utc).astimezone(ZoneInfo("Europe/Paris"))
print(now_paris.tzinfo is not None)
variante(s) utile(s)
from datetime import datetime
from zoneinfo import ZoneInfo
naive = datetime(2025, 7, 1, 12, 0, 0)
aware = naive.replace(tzinfo=ZoneInfo("Europe/Paris"))
print(aware.tzinfo is not None)
notes
- Utilisez des objets “aware” pour éviter les erreurs d’heure d’été.
- ZoneInfo fait partie de la stdlib (3.9+).