python - 在 Django 中使用多个时区

标签 python django internationalization django-timezone

我正在开发的应用程序的目标用户是美国。而且(如您所知)在美国有不止一个时区。所以我有一些疑问:

  • 那么我怎样才能根据 当前用户?
  • 以及如何存储 DateTime 数据以显示正确的时间 每个用户?
  • 如何比较时间(例如:user.event.created > datetime.now())? .now() 使用什么时区?
  • 我应该在 settings.py 文件中设置什么 TIME_ZONE。

这是一个 API,不能通过 JS 获取用户的时区。我通过 TokenAuthentication 获取当前用户。

最佳答案

settings.py 使用 UTC 并从 Javascript 获取他们的时区偏移量:

var utcOffset = -((new Date()).getTimezoneOffset()) / 60;

例如现在洛杉矶 utcOffset == -7

不幸的是,这没有考虑夏令时之后的变化(偏移量变化为 -8),因此您可能必须在检索时弄清楚这一点才能获得 太平洋/洛杉矶。否则,您总是可以在注册表单中询问用户这对您的业务是否重要。

编辑:由于您使用的是 API,您也可以尝试使用 IPInfoDB API基于客户端 IP 地址进行地理定位。它并不总是完全准确,但几乎总是足以获得正确的时区。

关于python - 在 Django 中使用多个时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32381976/

相关文章:

python - 在 numpy 数组中赋值

django - 更改 Django 管理列表布局

动态内容的 Symfony 翻译

python - Django-创建中间多对多模型时出错

html - 指定 XHTML 元素的语言时是否需要 `xml:lang` 属性(除了 HTML `lang` 属性)?

php - pybabel或其他用于PHP的l10n库

python - 如何使 Django 通用 View 仅可供登录用户访问?

python - 使用 pip 安装特定的软件包版本

python - Django haystack 索引多对多字段,但如果有多个词则搜索失败

python - 自定义用户模型 django-allauth 出现断言错误