gpt4 book ai didi

python - 如何强制 Django 查询集返回当前时区的日期时间字段?

转载 作者:行者123 更新时间:2023-12-02 03:43:31 24 4
gpt4 key购买 nike

我有 Django 模型:

class Deal(models.Model):
...
created_at = models.DateTimeField(auto_now_add=True)

当我通过查询集获取created_at值时,它总是返回给我日期时间值tzinfo=<UTC>像这样:

Deal.objects.filter(id=62).values('created_at')
<QuerySet [{'created_at': datetime.datetime(2015, 10, 26, 4, 10, 54, 997000, tzinfo=<UTC>)}]>

如何强制查询集返回当前时区的日期时间值(例如 Asia/Ho_Chi_Minh)?

最佳答案

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()}

关于python - 如何强制 Django 查询集返回当前时区的日期时间字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47604425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com