如何在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
相关产品推荐
相关产品推荐

