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

如何在Python中设置默认时区?(附Java设置方式参考)

在Python中设置默认时区的几种实用方式

嘿,刚好之前折腾过Python时区设置的问题,跟Java的-Duser.timezone=GMT+8类似,Python里也有几种不同的方式来设置默认时区,看你具体场景来选:

1. 用环境变量(最接近Java的启动参数方式)

如果想在启动脚本时就指定时区,像Java用JVM参数那样,你可以通过TZ环境变量来设置:

  • Linux/macOS终端:
    TZ='Asia/Shanghai' python your_script.py
    
  • Windows命令提示符:
    set TZ=Asia/Shanghai && python your_script.py
    

要是用IDE运行,直接在运行配置里添加环境变量TZ=Asia/Shanghai就行,不用每次敲命令。

2. 在代码内全局设置(无需外部配置)

如果不想依赖环境变量,直接在代码开头配置全局时区更稳妥,分两种情况:

👉 Python 3.9+ 推荐用内置zoneinfo

Python 3.9之后自带了标准的时区模块,不用装额外依赖:

import datetime
import zoneinfo

# 把默认时区设为上海(GMT+8)
datetime.timezone.set_default(zoneinfo.ZoneInfo("Asia/Shanghai"))

# 测试一下,现在打印的当前时间就是北京时间了
print(datetime.datetime.now())

👉 旧版本Python用pytz兼容

如果你的Python版本低于3.9,先装pytz库:

pip install pytz

然后在代码里设置全局时区:

import datetime
import pytz

# 方式一:获取时间时指定(适合零散使用)
now_beijing = datetime.datetime.now(pytz.timezone('Asia/Shanghai'))

# 方式二:全局替换默认时区(更彻底)
import _pytz
_pytz._LOCAL_TIMEZONE = pytz.timezone('Asia/Shanghai')

⚠️ 注意:_pytz是内部模块,未来版本可能有变动,优先用官方推荐的zoneinfo(如果版本允许)。

3. 框架专属配置(比如Django/Flask)

要是你用Web框架,很多框架有自己的时区配置项,比如Django需要在settings.py里设置:

TIME_ZONE = 'Asia/Shanghai'
USE_TZ = True

这种情况直接跟着框架文档来配置就好,不用自己写代码改全局时区。


内容的提问来源于stack exchange,提问作者brandon.bai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:30:35