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

如何将ISO格式UTC日期字符串转换为PST时区后再减去12小时

时间转换实现方案

原代码问题说明

  • 未将UTC字符串解析为datetime类型对象,直接赋值字符串无法进行时间运算
  • 不存在convert方法,时区转换需使用标准库的astimezone方法
  • 时间偏移未使用timedelta对象,且需求是减12小时而非代码中的8小时

完整实现代码

本实现基于Python 3.9+版本,使用内置的zoneinfo做时区处理:

from datetime import datetime, timedelta
from zoneinfo import ZoneInfo

# 1. 解析ISO格式的UTC时间字符串
utc_time_str = "2021-11-21T12:16:42Z"
# 替换Z后缀兼容低于3.11的Python版本,3.11+可直接传入utc_time_str
utc_dt = datetime.fromisoformat(utc_time_str.replace("Z", "+00:00"))

# 2. 转换为PST时区,固定为UTC-8
# 如需自动适配太平洋时区夏令时,可替换为ZoneInfo("America/Los_Angeles")
pst_zone = ZoneInfo("Etc/GMT-8")
pst_dt = utc_dt.astimezone(pst_zone)

# 3. 减去12小时
result_dt = pst_dt - timedelta(hours=12)

# 格式化输出
print(f"转换后PST时间: {pst_dt.strftime('%Y-%m-%d %H:%M:%S')}")
print(f"减12小时后结果: {result_dt.strftime('%Y-%m-%d %H:%M:%S')}")

低版本Python兼容方案

如果使用Python 3.8及以下版本,可安装pytz库替换时区处理逻辑:

from datetime import datetime, timedelta
import pytz

utc_time_str = "2021-11-21T12:16:42Z"
utc_dt = pytz.utc.localize(datetime.fromisoformat(utc_time_str.replace("Z", "")))
pst_zone = pytz.timezone("Etc/GMT-8")
pst_dt = utc_dt.astimezone(pst_zone)
result_dt = pst_dt - timedelta(hours=12)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:27:02