Awa*_*ias 5 python time google-app-engine datetime
在我的机器上的python下,我可以运行datetime.now()以获取当地时间.如果我检查time.daylight标志它被设置为1因为我们目前在7月(因此夏令时).
但是,如果我datetime.now()在Google App Engine(包括开发服务器)上运行,它不会考虑夏令时(英国夏令时)并返回错误的时间(13:47而不是14:47).如果我time.daylight在GAE中进行检查,则设置为0.
我怎样才能得到正确的当地时间?我是否需要更改应用的时区?
Google App Engine 的“时区”始终设置为 UTC。
您可以使用 pytz 之类的库调整到您当地或所需的时区。
在 Google Code 上查看以下项目,以获取 pytz 的 App Engine 优化版本。
我已经能够做到这一点:
import pytz
import datetime
tz = pytz.timezone('Europe/London')
print datetime.datetime.now(tz)
Run Code Online (Sandbox Code Playgroud)
默认情况下,Google App Engine 似乎已经导入了一些模块,包括pytzand datetime,因此也许不需要显式导入它们。
AppEngine是一个分布式系统,其服务器可以位于全球不同的数据中心(afaik,目前是欧盟和美国).请注意,您运行的python代码在服务器上运行而不是在浏览器中运行,因此您永远不会得到客户端的时间.为了获得客户的时间,您需要使用JavaScript然后将其发送到服务器.
GAE服务器的时区始终设置为UTC.由于UTC是在距离英国时间一小时的夏季时间,因此您将获得一小时的差异.
有关GAE的时间处理,请参阅此博客系列:http://www.learningtechnicalstuff.com/2010/01/supporting-timezones-in-google-app.html