在GAE上,我如何根据正确的客户端TimeZone显示日期?

pau*_*reg 5 python django timezone google-app-engine

在我的Google App Engine应用程序中,我在我的模型中存储了一个自动更新的日期/时间,如下所示:

class MyModel(db.Model):
   date = db.DateTimeProperty(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

但是,该日期/时间是服务器上的本地时间,根据它的时区.

那么,当我想在我的网页上显示它时,我如何根据客户时区格式化它?

另外,我怎么知道谷歌服务器在哪个时区?

Tho*_*day 5

关于你问题的第二部分:

无论服务器在什么时区,Python time()都会返回UTC.timezone()和tzname()将分别为您提供服务器上本地时间的偏移量以及时区名称和DST时区作为元组的结果. .截至发布时,GAE使用Python 2.5.x; 请参阅此处的 Python时间函数文档.

对于问题的第一部分:

您可以使用服务器上的代码格式化日期,也可以使用客户端上的代码格式化日期.

  • 如果您在服务器上格式化,则可以

    • 使用请求者IP地址的时区
    • 要求用户注册并为您提供时区,存储它并使用存储的值
    • 在GET或POST上使用(隐藏?)字段,以便客户端所需的时区是请求的一部分
  • 如果您在客户端上格式化,则需要编写几行JavaScript.该过程类似于"使用Date(utctime)从UTC生成日期,然后将其填入文档." 默认情况下,JavaScript日期显示为本地时间,无论它们如何初始化 - 太棒了!

我建议在客户端上格式化,因为什么是没有一点JavaScript的网页?这是2009年! 马塞洛有一些例子.