Django 如何处理每个用户不同时区的情况?理想情况下,我想在 UTC 时区中运行服务器(例如,在 settings.py 中设置 TIME_ZONE="UTC"),因此所有日期时间都作为 UTC 存储在数据库中。像 this 这样的东西这让我很害怕,这就是为什么我在任何地方都喜欢使用 UTC。
但是,为每个用户存储一个时区并仍然使用标准的 django 日期时间格式和 modelform 包装器会有多难。我是否预计必须在各处编写日期处理代码以将日期转换为用户的时区并再次转换回 UTC?
我仍在阅读 Django 教程,但我知道在其他一些假定系统时区无处不在的框架中处理用户时区会非常痛苦,所以我想我现在就问。
我目前的研究包括搜索 django 文档并只找到 one reference到时区。
附加:
- 有一个 few bugs submitted关于 Django 和时区处理。
- Babel 有 some contrib code for django这似乎与语言环境中的时区格式有关。
最佳答案
更新,2013 年 1 月:Django 1.4 现在有 time zone支持!!
由于历史原因的旧答案:
我将亲自为我的应用程序解决这个问题。我解决这个问题的第一个方法是采用 django 核心开发人员 Malcom Tredinnick 在 this django-user's post 中的建议。 .您可能希望将用户的时区设置存储在他们的用户配置文件中。
我也强烈建议您查看 pytz module ,这使得时区工作不那么痛苦。对于前端,我创建了一个基于 pytz 中常见时区的“时区选择器”。我有一个区域选择框,另一个位置选择框(例如,US/Central 使用两个选择框呈现)。它使选择时区比在 400 多个选择的列表中费力更方便。
关于python - 具有系统时区设置的 Django 与用户的个人时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1061911/