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

如何让Django使用系统时区?解决默认设为America/Chicago问题

解决方案

可以实现让Django自动使用系统时区,无需手动设置os.environ["TZ"],具体步骤如下:

  1. 在settings.py中动态获取系统时区
    直接在配置文件里通过Python代码获取当前系统的时区标识符,赋值给TIME_ZONE。示例代码:

    # settings.py
    import datetime
    
    # 获取系统本地时区的标识符(如"Asia/Shanghai"、"Europe/London"等)
    TIME_ZONE = datetime.datetime.now(datetime.timezone.utc).astimezone().tzinfo.key
    

    如果你使用Python 3.9及以上版本,也可以用zoneinfo模块更简洁地获取:

    # settings.py
    import zoneinfo
    
    TIME_ZONE = zoneinfo.ZoneInfo.default_key()
    
  2. 确保启用时区支持
    保持USE_TZ = True(这是Django 4.0+的默认设置,旧版本可能需要手动开启),这样Django会基于你动态设置的TIME_ZONE处理时间,同时自动管理os.environ["TZ"]变量,覆盖默认的America/Chicago。

注意事项

  • 这种方式会在Django启动时一次性获取系统时区,如果设备移动后系统时区变更,需要重启Django服务才能加载新的时区。
  • 如果你需要在Django运行过程中实时响应系统时区变化,需要额外编写中间件或自定义时间处理逻辑,但对于本地移动设备的场景,重启服务通常就能满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:09:58