2009-11-17 67 views
1

在Python中使用时间的问题。Python中奇怪的时间问题

终端>的Python

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

这个时间是指通过Django的服务器GMT: Tue, 17 Nov 2009 09:16:20 GMT

的Eclipse

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

这个时间表示GMT: Tue, 17 Nov 2009 03:16:24 GMT

我的当前时区是格林尼治标准时间,时间是过去9分钟16分钟,这意味着终端是正确的,但是Eclipse/Django的时间是6个小时。我很困惑。我以为他们都会使用相同版本的Python?据我所知,我只有2.6.2安装。

回答

7

Django设置为芝加哥时间。您可以更改它,编辑(或添加)settings.py中的TIME_ZONE标志。

如果您在Windows上运行,那么Django的力量把事情搞得一团糟,如果你不将它设置为你的本地区域 - http://docs.djangoproject.com/en/dev/ref/settings/

+0

我依稀记得改变我的最后一个Django项目变量。该死的。非常感谢! – Federer 2009-11-17 09:30:10

+1

我认为它实际上设置为堪萨斯州劳伦斯时间,它与芝加哥处于同一时区。 – 2009-11-17 11:18:13

0

接近愚蠢,这两个运行在同一台机器上?如果没有,两台机器是否都使用NTP来同步时间?

2

通过运行python -c "import sys; print sys.path并检查输出以查看它们是否相同,可以检查它是否是相同版本的python。

否则 - 它可能与您的TZ环境变量或其他时区设置有关。也许Django在环境中设置了一个全球时区。 。要检查这个,你可以尝试使用utcnow()而不是now().utctimetuple。如果这些相同,那么每个环境都认为它处于不同的时区。