2013-07-28 73 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

相關問題