【问题标题】:How to get the local timezone of the system from Django?如何从 Django 获取系统的本地时区?
【发布时间】:2013-06-28 18:52:42
【问题描述】:

我在时区 +5:30 从本地机器输入时间。我的TIME_ZONEsettings.py 文件中设置为UTC。现在,从django admin 输入数据的用户将在他自己的本地时区输入数据,该时区可能位于世界任何地方。我在想的是how do I convert this time into UTC before storing it in the DB? 我只需要将数据库中的所有数据存储在UTC 中。有什么想法吗?

【问题讨论】:

  • 你不能,除非你知道“用户输入数据”的时区。
  • @Aya 没有小部件什么的吗?一些 javascript 返回本地时区?
  • 当然,但您可能还希望将显示的数据也更改为本地用户的时区。根据another question,目前没有内置方法可以做到这一点。
  • @Aya 太糟糕了。 :( 关于如何超越 django 管理员来做到这一点的任何想法?
  • 为了澄清,我的意思是我不知道有一种方法可以覆盖该行为,尽管这并不一定意味着没有办法做到这一点。

标签: python django django-timezone


【解决方案1】:

首先,你应该得到用户的时区或时差。

时差举例

首先,在客户端你必须得到时差:

//JavaScript
d = new Date()
d.getTimezoneOffset()
// print
-240

其次,不同的时间应转换为时间戳并发送到服务器端。在服务器端,您可以从时间戳获取可保存到数据库的时间。

【讨论】:

  • 我正在从 django 管理员输入数据。在将数据发送到 django 服务器之前,我是否可以控制数据?
  • 是的,在模板中。通常,django 的管理员会根据设置显示时间。如果在 Django 管理员的设置时间设置 USE_TZ = True 应该是 UTC。但我明白你没有。我说的对吗?
  • 没有。我在我的设置文件中设置了USE_TZ = True。所以问题是存在的。此外,如果用户现在单击时间,那么它应该显示 UTC 时间对吗?如果是这样的话,如果用户手动输入时间会发生什么?
【解决方案2】:

转到 Django 项目的 settings.py

评论时区设置并使用 TIME_ZONE = timezone.now()

from django.utils import timezone


TIME_ZONE = timezone.now()

# TIME_ZONE = 'UTC'
# USE_I18N = True
# USE_L10N = True
# USE_TZ = True

【讨论】:

  • TIME_ZONE 必须是字符串
猜你喜欢
  • 2016-05-05
  • 2011-03-14
  • 2011-01-20
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
  • 2015-05-26
  • 1970-01-01
  • 2012-06-20
相关资源
最近更新 更多