web-dev-qa-db-fra.com

Heure d'été Python

Comment vérifier si l'heure d'été est en vigueur?

36
Pawel Furmaniak

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.

56
Greg Hewgill

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())
0
Jose Alban