100 votes

Python : Déterminer le fuseau horaire local

Je veux comparer les horodatages UTC d'un fichier journal avec les horodatages locaux. Lors de la création de l'objet local datetime, j'utilise quelque chose comme :

>>> local_time=datetime.datetime(2010, 4, 27, 12, 0, 0, 0, 
                                 tzinfo=pytz.timezone('Israel'))

Je veux trouver un outil automatique qui remplacerait letzinfo=pytz.timezone('Israel') par le fuseau horaire local actuel.

Des idées ?

150voto

vbem Points 1615

En Python 3.x, le fuseau horaire local peut être calculé comme suit :

import datetime
LOCAL_TIMEZONE = datetime.datetime.now(datetime.timezone.utc).astimezone().tzinfo

C'est une utilisation délicate du code de datetime.

Pour le python < 3.6, vous aurez besoin

import datetime
LOCAL_TIMEZONE = datetime.datetime.now(datetime.timezone(datetime.timedelta(0))).astimezone().tzinfo

46voto

Steven Points 10243

Essayez dateutil, qui a un type tzlocal qui fait ce dont vous avez besoin.

9voto

Robbie Matthews Points 191

Ce qui suit semble fonctionner pour 3.7 +, en utilisant libs standard :

from datetime import timedelta
from datetime import timezone
import time

def currenttz():
    if time.daylight:
        return timezone(timedelta(seconds=-time.altzone),time.tzname[1])
    else:
        return timezone(timedelta(seconds=-time.timezone),time.tzname[0])

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