[英]GAE & JavaScript datetime sync
在客戶端和服務器之間同步時間的最佳做法是什么?
我具有查詢數據存儲區的功能:
@classmethod
def read( cls, language=None, user=None, filters=None, **q_options ):
assert not isinstance( cls, BaseModel )
assert issubclass( cls, BaseModel )
query = cls.query( cls.language == language )
if filters:
for name, value in cls.attributes( filters, [] ).iteritems():
if name == 'updated':
query = query.filter( getattr(cls, name) >= value )
else:
query = query.filter( getattr( cls, name ) == value )
# logging.info( query )
# Query(kind='Page', filters=AND(
# FilterNode('language', '=', 'en'),
# FilterNode('updated', '>=', datetime.datetime(2014, 5, 7, 9, 12, 51, 142000))))
return query.fetch()
data = query.fetch( **q_options )
return cls.sort( data )
使用ajax調用執行時:
{method: 'GET', url: '/something.json?updated=' + (new Date().getTime() / 1000)}
它應該返回在呼叫中提供的時間之后更新的項目。 (我使用它來將瀏覽器的localStorage與真實數據同步)。 好吧,這沒有用,但是我發現這是由於服務器和客戶端之間的時間差造成的。
我的時間是UTC / GMT +2小時,CEST(歐洲中部夏令時)時區(即javascript發送的時區),GAE dev_appserver在GMT工作。 對此進行補償:
updated=((new Date().getTime() - 1000*60*60*2) / 1000)
解決了這個問題,但是硬編碼並不是針對不同時區的解決方案。 因此,幾個問題:
1)實際GAE服務器的時區是什么? 與dev_appserver的相同嗎?
2)我應該處理客戶端或服務器上下文(javascript或python)中的差異嗎?
3)我還應該知道什么? (:
謝謝
這篇文章介紹了一種解決方案: 如何在Google App Engine中獲得當前英國時間
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.