2009-11-17 4 views
1

Problème avec l'utilisation des temps en Python.Problème d'heure étrange en Python

Terminal> Python

>>> calendar.timegm(datetime.datetime.now().utctimetuple()) 
1258449380 

Cette fois-ci indique GMT: Tue, 17 Nov 2009 09:16:20 GMT

Eclipse via Django serveur

>>> calendar.timegm(datetime.datetime.now().utctimetuple()) 
1258427784 

Cette fois-ci indique GMT: Tue, 17 Nov 2009 03:16:24 GMT

Mon fuseau horaire est en fait GMT et l'heure est à 16 heures et demie, ce qui signifie que le terminal est correct, mais celui d'Eclipse/Django est à 6 heures de repos. Je suis si confus. Je pensais qu'ils utiliseraient tous les deux la même version de Python? Pour autant que je sache, je n'ai que 2.6.2 installé.

Répondre

7

Django est à l'heure de Chicago. Pour le modifier, modifiez (ou ajoutez) l'indicateur TIME_ZONE dans settings.py.

Si vous utilisez Windows, puis les choses mess Django pourrait si vous ne définissez pas à votre zone locale - http://docs.djangoproject.com/en/dev/ref/settings/

+0

Je me souviens vaguement changer cette variable dans mon dernier projet Django. Zut. Merci beaucoup! – Federer

+1

Je pense que c'est en fait à Lawrence, au Kansas, qui est dans le même fuseau horaire que Chicago. –

0

Bordant sur idiot, sont ces deux fonctionnant sur la même machine? Si non, les deux machines utilisent-elles le protocole NTP pour synchroniser l'heure?

2

Vous pouvez vérifier s'il s'agit de la même version de python en exécutant python -c "import sys; print sys.path et en examinant la sortie pour voir si elles sont identiques.

Sinon, cela peut être lié à votre variable d'environnement TZ ou à un autre paramètre de fuseau horaire. Peut-être que Django définit un fuseau horaire global quelque part dans l'environnement. . Pour vérifier cela, vous pouvez essayer d'utiliser utcnow() au lieu de now().utctimetuple. Si ce sont les mêmes, c'est que chaque environnement pense que c'est dans un fuseau horaire différent.