Comment vérifier si l'heure d'été est en vigueur?
Vous pouvez utiliser time.localtime
et regarder l'indicateur tm_isdst
dans la valeur de retour.
>>> import time
>>> time.localtime()
(2010, 5, 21, 21, 48, 51, 4, 141, 0)
>>> _.tm_isdst
0
En utilisant time.localtime()
, vous pouvez poser la même question à tout moment arbitraire pour déterminer si l'heure d'été est (ou était) effective pour votre fuseau horaire actuel.
Si vous développez la réponse de @Greg Hewgill ci-dessus, en plus de la gestion du fuseau horaire local (avec l'aide de pip install tzlocal
), vous obtenez:
import time
from datetime import datetime, timedelta
from tzlocal import get_localzone
def to_local(dt):
"""From any timezone to local datetime - also cope with DST"""
localtime = time.localtime()
if localtime.tm_isdst:
utctime = time.gmtime()
hours_delta = timedelta(hours=(localtime.tm_hour - utctime.tm_hour))
dt = dt - hours_delta
return dt.replace(tzinfo=get_localzone())