You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django配置时区后DateTimeField仍显示UTC格式的问题求助

解决Django DateTimeField显示UTC时间的问题

问题原因

当USE_TZ = True时,Django会将DateTimeField的值以UTC时区存储在数据库中,直接访问该字段得到的是UTC时间的时区感知对象,不会自动转换为你设置的Asia/Ho_Chi_Minh时区。

解决方案

修改你的getDateOrder方法,使用Django提供的时区工具将UTC时间转换为本地时区:

  1. 首先导入Django的时区模块:
from django.utils import timezone
  1. 修正并更新模型中的方法:
def getDateOrder(self):
    weekdays = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
    # 将UTC时间转换为本地时区
    local_datetime = timezone.localtime(self.dateOrder)
    return weekdays[local_datetime.weekday()] + ', ' + local_datetime.strftime("%d/%m/%Y, %H:%M")

额外说明

  • timezone.localtime()会自动根据settings.py中TIME_ZONE的配置完成时区转换。
  • 当USE_TZ=True时,auto_now_add=True生成的是带时区信息的datetime对象,确保了转换的有效性;如果是无时区信息的datetime对象,需要先通过timezone.make_aware()转为带时区的对象再进行转换。

内容的提问来源于stack exchange,提问作者user21960224

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 20:03:11