web-dev-qa-db-fra.com

Récupère le fuseau horaire local du système dans python

Cela semble étrange, mais je ne trouve pas de moyen facile de trouver le fuseau horaire local à l'aide de Pandas/pytz en Python.

Je peux faire:

>>> pd.Timestamp('now', tz='utc').isoformat()
Out[47]: '2016-01-28T09:36:35.604000+00:00'
>>> pd.Timestamp('now').isoformat()
Out[48]: '2016-01-28T10:36:41.830000'
>>> pd.Timestamp('now').tz_localize('utc') - pd.Timestamp('now', tz='utc')
Out[49]: Timedelta('0 days 01:00:00')

Ce qui me donnera le fuseau horaire, mais ce n'est probablement pas la meilleure façon de le faire ... Y a-t-il une commande en pytz ou pandas pour obtenir le fuseau horaire du système? (de préférence dans python 2.7)

14
ntg

Je ne pense pas que ce soit possible en utilisant pytz ou pandas, mais vous pouvez toujours installer python-dateutil ou tzlocal :

from dateutil.tz import tzlocal
datetime.now(tzlocal())

ou

from tzlocal import get_localzone
local_tz = get_localzone()
21
Selcuk

time.timezone devrait fonctionner.

Décalage du fuseau horaire local (non DST), en secondes à l'ouest de l'UTC (négatif dans la plupart des pays d'Europe occidentale, positif aux États-Unis, zéro au Royaume-Uni).

La division par 3600 vous donnera le décalage en heures:

import time

print(time.timezone / 3600.0)

Cela ne nécessite aucune bibliothèque Python supplémentaire.

16
Martin Evans

Bien qu'il n'utilise pas pytz/Pandas, les autres réponses ne le sont pas non plus, j'ai donc pensé que je devrais poster ce que j'utilise sur mac/linux:

import subprocess
timezone = subprocess.check_output("date +%Z")

Avantages par rapport aux autres réponses: respecte l'heure d'été, ne nécessite pas l'installation de bibliothèques supplémentaires.

1
jeremysprofile