GAE& JavaScript日期时间同步

时间:2014-05-07 09:47:04

标签: javascript python google-app-engine

在客户端和服务器之间同步时间的最佳做法是什么?

我有这个查询数据存储的功能:

@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' s相同吗?

2)我应该处理客户端或服务器上下文(javascript或python)的差异吗?

3)还有什么我应该知道的吗? (:

由于

1 个答案:

答案 0 :(得分:1)

这篇文章描述了一个解决方案:How to get current UK time in Google App Engine

Google App Engine始终采用UTC格式,因此您需要像pytz这样的库来调整您的偏好设置。