我正在尝试将 UTC 时间转换为欧洲/华沙时间。华沙时间现在为 UTC + 2 小时。我不知道为什么我提前 30 分钟得到结果。我正在从类似于以下内容的字符串解析日期:7:27:02 AM 或 2:16:28 PM。
print(time_str) #6:47:46 PM
format = '%I:%M:%S %p'
time_obj = datetime.strptime(time_str, format)
utc_time = time_obj.replace(tzinfo=ZoneInfo('Etc/UTC'))
converted_time = utc_time.astimezone(tz=ZoneInfo('Europe/Warsaw')).time()
print(utc_time.time(), converted_time)
输出是
6:47:46 PM
18:47:46
20:11:46
虽然我期待:
6:47:46 PM
18:47:46
20:47:46
编辑 - 此行修复了它:
time_obj = datetime.strptime(time_str, format).replace(year=2021, month=7, day=14)
这里 pytz 模块附带了帮助:
from pytz import all_timezones, timezone
datetime.fromisoformat('2024-11-03T22:20:00Z').astimezone(timezone('Poland'))
all_timezones 显示可用的 tz