102 votes

Obtenir des informations sur le fuseau horaire du système en Python ?

Je veux obtenir le fuseau horaire par défaut (PST) de mon système à partir de Python. Quelle est la meilleure façon de faire ça ? J'aimerais éviter de forger un autre processus.

143voto

Johannes Weiß Points 19013

Cela devrait fonctionner :

import time
time.tzname

time.tzname renvoie un tuple de deux chaînes : la première est le nom du fuseau horaire local non DST, la seconde est le nom du fuseau horaire local DST.

Exemple de retour : ('MST', 'MDT')

37voto

wordsforthewise Points 2907

J'ai trouvé que cela fonctionnait bien :

import datetime
tz_string = datetime.datetime.now(datetime.timezone.utc).astimezone().tzname()

Pour moi, cela a été en mesure de faire la différence entre les économies de lumière du jour et non.

Référence avec plus de détails : https://stackoverflow.com/a/39079819/4549682

31voto

ahawker Points 1761

Découvrez le module Python Time.

from time import gmtime, strftime
print(strftime("%z", gmtime()))

Heure normale du Pacifique

11voto

marr75 Points 4127

Les extraits de code pour calculer le décalage sont incorrects, voir http://bugs.python.org/issue7229.

La bonne façon de gérer cela est :

def local_time_offset(t=None):
    """Return offset of local zone from GMT, either at present or at time t."""
    # python2.3 localtime() can't take None
    if t is None:
        t = time.time()

    if time.localtime(t).tm_isdst and time.daylight:
        return -time.altzone
    else:
        return -time.timezone

Ce n'est probablement pas la question exacte que le PO a posée, mais il y a deux extraits incorrects sur la page et les bogues temporels sucent pour traquer et corriger.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X