如何在Python中自动获取本地时区的当前日期时间?
解决Python获取本地时区时间及VS Code时区显示问题
一、Python获取本地时区当前时间的正确方法
你之前的代码存在调用错误:get_localzone是函数,需要加括号调用get_localzone()才能返回时区对象,而非直接传入函数本身。如果调用后仍返回UTC,大概率是环境变量或系统时区识别异常,以下是可靠解决方案:
方案1:Python 3.9+内置zoneinfo模块(推荐)
无需额外安装依赖,直接调用系统本地时区:
from datetime import datetime from zoneinfo import ZoneInfo # 获取带本地时区的当前时间 local_dt = datetime.now(tz=ZoneInfo("local")) print(local_dt)
方案2:修复tzlocal的使用逻辑
先确保tzlocal安装正确(pip install tzlocal),再按正确方式调用,同时排查环境变量:
from datetime import datetime from tzlocal import get_localzone # 正确调用函数获取时区对象 local_tz = get_localzone() local_dt = datetime.now(local_tz) print(local_dt)
若仍返回UTC,检查系统TZ环境变量:
- Linux/macOS终端执行
echo $TZ,Windows终端执行echo %TZ%,如果输出为UTC,删除该环境变量后重新运行脚本。
方案3:正确使用astimezone()
你之前的调用返回UTC,可能是进程时区被强制设置,试试先生成无时区的时间再转本地时区:
from datetime import datetime # 生成无时区的当前时间,再转换为本地时区 naive_dt = datetime.now() local_dt = naive_dt.astimezone() print(local_dt, local_dt.tzinfo)
二、解决VS Code显示UTC时区的问题
VS Code的运行环境可能继承了错误的时区配置,可尝试以下操作:
- 检查
.vscode/launch.json配置,若存在"TZ": "UTC"这类环境变量设置,直接删除该配置项。 - 完全重启VS Code,确保它重新读取系统时区设置。
- 在VS Code终端临时修复时区:
- Linux/macOS:
export TZ=$(cat /etc/timezone) - Windows(PowerShell):
Set-Item Env:TZ (Get-TimeZone).Id
- Linux/macOS:
内容的提问来源于stack exchange,提问作者M Waqar Anwar
相关产品推荐
相关产品推荐

