2013-07-28 75 views
4

在我的机器上的python下,我可以运行datetime.now()以获取当地时间。如果我检查time.daylight标志,它将被设置为1,因为我们当前在7月(因此夏令时)。如何在Google App Engine中获取当前英国时间

但是,如果我在Google App Engine上运行datetime.now()(不包括夏令时),并返回错误的时间(13:47而不是14:47)。如果我在GAE中检查time.daylight,它将设置为0

我该如何获得正确的当地时间?我是否需要更改我的应用的时区?

回答

4

谷歌App Engine的“时区”始终设置为UTC。

您可以使用pytz等库调整到您的本地或所需的时区。

请参阅Google Code上的以下项目,了解Pytz的App Engine优化版本。

Google Code - gae-pytz

3

我已经能够得到这个工作:

import pytz 
import datetime 

tz = pytz.timezone('Europe/London') 

print datetime.datetime.now(tz) 

看来谷歌应用程序引擎已经默认进口的几个模块,包括pytzdatetime,所以也许没有必要明确地导入。

4

AppEngine是一个分布式系统,其服务器可以位于全球不同的数据中心(afaik,目前欧盟和美国)。请注意,您运行的python代码不在浏览器中运行,因此您永远不会得到客户端的时间。要获得客户的时间,您需要使用JavaScript并将其发送到服务器。

GAE服务器的时区为always set to UTC。由于UTC在夏季时间与英国时间相差一小时,因此您将得到一小时的差异。

见时间这个博客系列处理GAE上:http://www.learningtechnicalstuff.com/2010/01/supporting-timezones-in-google-app.html

相关问题