2011-11-30 3 views
0

Totalement nouveau sur python, je travaille actuellement sur le script d'un ex-collègue. en le regardant, il semble assez simple. Voici la situation:Python - Essayer d'obtenir un fuseau horaire différent

Le script examine l'heure locale actuelle (UTC) et affiche une table temporelle qui défile/change tout au long de la journée au fil des heures, de sorte qu'il y a toujours une table de 8 heures. Le problème est que maintenant nous aimerions déployer une copie de cet outil (sur le même serveur) dans CST ('America/Chicago') (ce qui signifie que je dois changer l'heure UTC en CST) alors je '' J'essaie juste de trouver un moyen de modifier ce qu'il doit faire pour que la variable 'current_time' == GMT -6.

Il a utilisé strftime() pour obtenir la première heure:

current_time = int(strftime("%H")) 
if current_time <19: 
temp_page.write(...) 
elif current_time == 19: 
temp_page.write(...) 

etc.

Alors - de ma connaissance de php, j'aimerais pouvoir faire quelque chose comme:

current_time = int(strftime("%H"), (localtime() -6 hours)) 

(oui, je me rends compte que ce n'est pas vrai code php, mais nous espérons que vous obtenir mon sens ;-))

Dans mon r Esearch, je suis tombé sur pytz, mais ce n'est pas installé sur le serveur web, mais je peux probablement l'obtenir si c'est la meilleure/la plus facile à mettre en œuvre.

Toute aide est grandement appréciée.

Répondre

0

Vous pouvez probablement utiliser le module datetime (il fait partie de la bibliothèque standard, donc il est installé si un python standard est sur le système).

En particulier, les objets datetime peuvent avoir un attribut optionnel tzinfo, utilisé lors des conversions de fuseau horaire. Here est un billet de blog qui explique étape par étape comment les utiliser.

+0

Merci Mac, c'est ce que je cherchais! Je pourrais commencer à utiliser pytz parce qu'il semble avoir de bonnes choses, mais mon code est maintenant: 'code' current_time = datetime.now() - timedelta (heures = 6) current_time = int (current_time.strftime ("% H ")) – Tev

+0

@Tev -' current_hour = current_time.hour' fonctionnera aussi. – eumiro

+0

Merci @eumiro - c'est encore plus facile! – Tev

3

Oui, essayez d'installer pytz, il vous aidera beaucoup lorsque vous travaillez avec différents fuseaux horaires (et UTC).

Le temps UTC (indépendant du fuseau horaire de votre ordinateur) peut être obtenu avec:

import pytz 
from datetime import datetime 

now = datetime.now(pytz.utc) 

now est maintenant datetime.datetime(2011, 11, 30, 14, 26, 30, 628014, tzinfo=<UTC>) et vous pouvez l'utiliser pour calculer l'heure UTC avec now.hour (retourne 14)

+0

Je vais ajouter pytz et commencer à travailler avec, mais pour la solution rapide, je suis allé avec l'exemple datetime. Merci beaucoup! – Tev

Questions connexes