【问题标题】:Django international site with UTC带有 UTC 的 Django 国际站点
【发布时间】:2014-03-11 01:47:00
【问题描述】:

我正在编写一个跨多个时区在国际上提供服务的网站。

在settings.py中:

TIME_ZONE = 'UTC'
USE_TZ = True

我想知道如果来自新西兰的人通过models.DateTimeField 输入日期时间,它是否会自动选择当前时区并转换为 UTC 而无需任何额外代码?

我对这一段有点困惑:

当前时区相当于当前的语言环境 翻译。但是,没有接受语言的等价物 Django 可以用来确定用户时区的 HTTP 标头 自动地。相反,Django 提供了时区选择功能。 使用它们来构建有意义的时区选择逻辑 你。

那么我是否必须重写保存方法才能添加get_current_timezone()

【问题讨论】:

    标签: django utc


    【解决方案1】:

    其中的关键语句是:“但是,Django 无法使用 Accept-Language HTTP 标头来自动确定用户的时区。”

    因此,Django 无法可靠地确定您的 NZ 用户的时区。它不会给你用户的时区——必须告诉!具体来说,在您明确地 activate() 一个时区之前,当前时区只是您在 TIME_ZONE 设置中定义的 UTC

    当涉及到用户输入时,documentation 表示:“Django 解释在当前时区的表单中输入的日期时间并返回可识别的日期时间对象。”因此,如果您有activated 适当的新西兰时区,那么转换将按照您的预期进行。但如果不是,日期时间将被解释为您的默认 UTC 时区。

    您如何确定用户的时区? documentation 提供了一个示例,说明如何根据用户明确选择的值进行设置。我敢肯定,还有一些服务会尝试根据 IP 地址猜测时区。不过,无论哪种方式,Django 都不会为你做这件事。

    【讨论】:

      猜你喜欢
      • 2014-03-08
      • 2015-09-07
      • 2023-04-11
      • 2019-12-12
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多