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

Python时区转换问题:服务器时间晚2小时,求修正方案

问题排查与修复

你的代码核心问题是:未将原始UTC时间戳标记为UTC时区,直接使用无时区信息的datetime对象转换时区,导致结果错误。

原始时间2023-06-06T15:55:53Z是UTC标准时间,但通过strptime解析后得到的是无时区属性的naive datetime对象。调用astimezone(local_tz)时,Python会默认把这个时间当成当前系统本地时区的时间来转换,而非UTC基准时间,因此输出结果不符合预期。

修复后的代码

from datetime import datetime, timezone
from zoneinfo import ZoneInfo

vcenter_timestamp = '2023-06-06T15:55:53.232524391Z'[:19]

server_format = '%Y-%m-%dT%H:%M:%S'
# 解析时将时间明确标记为UTC时区
server_dt = datetime.strptime(vcenter_timestamp, server_format).replace(tzinfo=timezone.utc)
local_tz = ZoneInfo('Europe/Rome')
local_dt = server_dt.astimezone(local_tz)
output_format = '%Y-%m-%d %H:%M:%S'
dt_rome = local_dt.strftime(output_format)

print(dt_rome)

关键改动说明

  1. 导入timezone模块,通过replace(tzinfo=timezone.utc)给解析后的时间添加UTC时区标记,确保转换时的基准时间正确
  2. 移除重复的import datetime(已从datetime包导入datetime类,无需重复导入)

执行修复后的代码会输出:2023-06-06 17:55:53,与期望结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:54:56