簡體   English   中英

GAE和JavaScript日期時間同步

[英]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中獲得當前英國時間

Google App Engine始終采用UTC 格式 ,因此您需要像pytz這樣的庫來調整您的首選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM