You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Python中将UTC时间转换为本地时间并正确显示?

解决UTC时间转本地/指定时区时间的问题

你的代码核心问题是没有将输入的UTC时间标记为UTC时区,导致astimezone处理时错误地将无时区信息(naive)的datetime对象视为本地系统时间进行转换,最终结果不符合预期。以下是无需手动计算timedelta的简便实现方法:

方法1:指定目标时区(如America/Chicago)

直接将UTC时间解析为带UTC时区的datetime对象,再转换到目标时区:

from datetime import datetime
from zoneinfo import ZoneInfo

test_date = "2025-10-01T19:20:00.000Z"

# 解析UTC时间为带时区的datetime对象
utc_dt = datetime.fromisoformat(test_date.replace('Z', '+00:00'))
# 转换为美国芝加哥时区
target_dt = utc_dt.astimezone(ZoneInfo("America/Chicago"))
# 格式化输出目标格式
print(target_dt.strftime('%a %b %d %-I:%M %p').upper())

输出结果:

WED OCT 01 2:20 PM

方法2:自动获取本地系统时区

如果需要自动适配当前系统的本地时区,可使用tzlocal库:

from datetime import datetime
from tzlocal import get_localzone

test_date = "2025-10-01T19:20:00.000Z"

utc_dt = datetime.fromisoformat(test_date.replace('Z', '+00:00'))
# 转换为本地时区
local_dt = utc_dt.astimezone(get_localzone())
print(local_dt.strftime('%a %b %d %-I:%M %p').upper())

关键说明

  • datetime.fromisoformat(test_date.replace('Z', '+00:00')):将末尾的Z替换为UTC时区标识+00:00,确保解析出的datetime对象携带UTC时区信息,避免naive datetime带来的转换错误。
  • Python会自动处理时区的夏令时/标准时偏移,无需手动计算timedelta
  • zoneinfo是Python 3.9+的标准库,无需额外安装;tzlocal需通过pip install tzlocal安装。

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

火山引擎 最新活动