我有Django模型:
class Deal(models.Model):
...
created_at = models.DateTimeField(auto_now_add=True)
当我通过queryset获得created_at值时,它总是返回tzinfo=<UTC>
的datetime值,如下所示:
Deal.objects.filter(id=62).values('created_at')
<QuerySet [{'created_at': datetime.datetime(2015, 10, 26, 4, 10, 54, 997000, tzinfo=<UTC>)}]>
如何在当前时区(例如亚洲/胡志明)强制使用queryset返回日期时间值?
发布于 2017-12-02 02:01:02
Django总是在UTC中保存日期时间,它们通常也在UTC中返回(取决于数据库和数据库适配器设置)。您通常使用activate()
选择时区。这会影响到各种事情,比如在模板中显示日期时间的方式。
如果出于某种原因要显式转换时区,可以很容易地使用localtime()
进行转换。例如:
from django.utils.timezone import localtime
import pytz
tz = pytz.timezone("Asia/Ho_Chi_Minh")
deals_utc = Deal.objects.filter(id=62).values("created_at")
deals_local = {"created_at": localtime(dt, tz) for dt in deals_utc.values()}
发布于 2017-12-01 20:19:14
在settings.py文件中,更改TIME_ZONE值。
TIME_ZONE='Asia/Ho_Chi_Minh'
https://stackoverflow.com/questions/47604425
复制相似问题