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