编程语言
首页 > 编程语言> > Python-Django时区无法正常工作

Python-Django时区无法正常工作

作者:互联网

我正在研究基于Django的网站.我正在尝试获得正确的时区和时间来显示.但它不能正常工作.我住在德克萨斯州达拉斯市.所以我的默认时区是’America / Chicago’.

我的settings.py文件包含以下代码行.

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

我有日期时间,并安装了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

当我用下面的代码在模板中打印出来时,我得到了这个输出,2015年10月20日,下午1点13分.

{{ database.time|localtime }}

我很困惑如何使用datetime,pytz和all来获得准确的时间以及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,timezone,datetime,django,pytz
来源: https://codeday.me/bug/20190528/1168774.html