如何在Google App Engine中获取当前英国时间

时间:2013-07-28 14:02:34

标签: python google-app-engine datetime time

在我的机器上的python下,我可以运行datetime.now()来获取当地时间。如果我检查time.daylight标记,则将其设置为1,因为我们目前处于7月(因此夏令时)。

但是,如果我在Google App Engine上运行datetime.now()(包括开发服务器),则不会考虑夏令时(英国夏令时)并返回错误的时间(13:47而不是14:47) 。如果我在GAE中检查time.daylight,则会将其设置为0

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

3 个答案:

答案 0 :(得分:5)

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

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

有关GAE的时间处理,请参阅此博客系列:http://www.learningtechnicalstuff.com/2010/01/supporting-timezones-in-google-app.html

答案 1 :(得分:4)

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

您可以使用像pytz这样的库来调整您当地或所需的时区。

在Google Code上查看以下关于App Engine优化版pytz的项目。

Google Code - gae-pytz

答案 2 :(得分:3)

我能够做到这一点:

import pytz
import datetime

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

print datetime.datetime.now(tz)

默认情况下,Google App Engine已经导入了一些模块,包括pytzdatetime,因此可能无需显式导入它们。