【问题标题】:How to get current UK time in Google App Engine如何在 Google App Engine 中获取当前英国时间
【发布时间】:2013-07-28 08:31:17
【问题描述】:

在我机器上的 python 下,我可以运行 datetime.now() 来获取本地时间。如果我检查time.daylight 标志,它会设置为1,因为我们目前在七月(因此是夏令时)。

但如果我在 Google App Engine(包括开发服务器)上运行 datetime.now(),它不会考虑夏令时(英国夏令时)并返回错误的时间(13:47 而不是 14:47)。如果我在 GAE 中检查 time.daylight,它将设置为 0

如何获得正确的当地时间?我需要更改应用程序的时区吗?

【问题讨论】:

    标签: python google-app-engine datetime time


    【解决方案1】:

    Google App Engine 的“时区”始终设置为 UTC。

    您可以使用 pytz 之类的库来调整到本地或所需的时区。

    查看以下有关 Google 代码的项目,了解 App Engine 优化版本的 pytz。

    Google Code - gae-pytz

    【讨论】:

      【解决方案2】:

      我已经能够得到这个工作:

      import pytz
      import datetime
      
      tz = pytz.timezone('Europe/London')
      
      print datetime.datetime.now(tz)
      

      Google App Engine 似乎已经默认导入了一些模块,包括 pytzdatetime,所以也许不需要显式导入它们。

      【讨论】:

        【解决方案3】:

        AppEngine 是一个分布式系统,其服务器可以位于全球不同的数据中心(afaik,目前是欧盟和美国)。请注意,您正在运行的 python 代码在服务器上而不是在浏览器中运行,因此您永远无法获得客户端的时间。要获得客户的时间,您需要使用 JavaScript,然后将其发送到服务器。

        GAE 服务器的时区是always set to UTC。由于 UTC 是夏令时,比英国时间晚一小时,因此您会得到一小时的差异。

        有关 GAE 的时间处理,请参阅此博客系列:http://www.learningtechnicalstuff.com/2010/01/supporting-timezones-in-google-app.html

        【讨论】:

          猜你喜欢
          • 2011-05-01
          • 2018-01-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-04
          • 2015-10-07
          • 2014-11-04
          相关资源
          最近更新 更多