Python-Django 时区无法正常工作

标签 python django datetime timezone pytz

我正在开发基于 Django 的网站。我正在尝试显示正确的时区和时间。但它不能正常工作。我住在德克萨斯州的达拉斯。所以我的默认时区是“美国/芝加哥”。

我的 settings.py 文件有这些代码行。

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

我安装了 datetime 和 pytz。所以当我试图在数据库中节省时间时,我的代码是,

from datetime import datetime
import pytz

utc = pytz.utc

database = Database.objects.get(id=1)

databas.time = utc.localize(datetime.now())

database.save()

所以当我检查数据库时,更新时间是 2015-10-20 23:13:04

而不是 2015-10-20 18:13:04

当我通过下面的代码在模板中打印出来时,我得到了这个输出 Oct. 2015 年 20 日下午 1:13

{{ database.time|localtime }}

我很困惑如何使用 datetime、pytz 和所有这些来获得准确的时间以及 settings.py 文件。

我想做的是我想节省UTC时间。但是当我打印出来时,我想根据用户获取访问者的时区和打印时间。我的网站目前只能在美国访问。我的模型有

time = models.DateTimeField(auto_now_add=True)

它节省了一些不同的时间。我有另一个模型,其中有一个名为 expire time 的列,我在其中使用以下代码进行保存,

expire_time = utc.localize(datetime.now()+ timedelta(hours=24))

表示我想在 24 小时后使链接过期。但是这个时区让我感到困惑。谁能帮我?我不知道我应该在我的代码中使用什么来获得正确的时区。

最佳答案

如果您设置 USE_TZ = True Django 以 UTC 格式存储日期时间。使用以下内容创建时区感知 datetime.now:

from django.utils import timezone
from datetime import timedelta

database.time = timezone.now()
expire_time = timezone.now() + timedelta(hours=24)

然后您可以使用 activate()将当前时区设置为最终用户的实际时区。 看看"Selecting the current time zone"查看用户如何选择他的时区以及如何使用此选择来激活他的时区的示例。

关于Python-Django 时区无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33248809/

相关文章:

sql - 在 SQL Server 中获取日期范围内的所有日期

python pandas 总结标称变量(计数)

python - 在 Django 中搜索应用程序

python - 在管理页面查看相册中的照片

python - 解析带有时区偏移量的 UNIX 时间戳(例如 "14232335 +0200")

Linq 日期和日期时间比较器

Python 相当于 Ruby 的 ObjectSpace?

python - import pandas_datareader 给出 ImportError : cannot import name 'is_list_like'

python - Python 中的 Elif 条件

python - 突然在运行测试时我得到 "TypeError: ' NoneType' object is not iterable