← retour aux snippets

zoneinfo: gérer l'ambiguïté (fold) et les conversions

Traiter les heures ambiguës lors des changements d'heure.

objectif

Traiter les heures ambiguës lors des changements d’heure.

code minimal

from zoneinfo import ZoneInfo
from datetime import datetime
# Exemple générique (heure locale non garantie ici)
dt = datetime(2021, 11, 7, 1, 30)
aware = dt.replace(tzinfo=ZoneInfo("America/New_York"))
print(hasattr(aware, "fold"))  # attendu: True

utilisation

from zoneinfo import ZoneInfo
from datetime import datetime
tz = ZoneInfo("Europe/Paris")
naive = datetime(2021, 10, 31, 2, 30)
one = naive.replace(tzinfo=tz, fold=0)
two = naive.replace(tzinfo=tz, fold=1)
print(one.fold == 0 and two.fold == 1)

variante(s) utile(s)

from datetime import datetime, timezone
print(datetime.now(timezone.utc).tzinfo is not None)

notes

  • L’attribut fold désambiguïse les heures dupliquées lors du passage heure d’été/hiver.
  • Préférez stocker en UTC et convertir en affichage.