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

解析自定义datetime格式并转换为UTC时区的技术求助

带时区偏移的Datetime字符串转UTC解决方案

你的代码报错ValueError: unconverted data remains: -05:00,核心原因是strptime的格式字符串没有包含时区偏移部分,原字符串末尾的时区信息未被解析。下面是两种可行的解决方法:

方法一:使用Python内置的%z格式符(Python 3.2+)

直接在格式字符串中添加%z来匹配±HH:MM格式的时区偏移,解析出带时区感知的datetime对象后再转UTC:

from datetime import datetime
import pytz

raw_dt = "2016-12-01T23:59:29-05:00"
# 格式字符串加入%z解析时区偏移
parsed_dt = datetime.strptime(raw_dt, "%Y-%m-%dT%H:%M:%S%z")
# 转换为UTC时区
utc_dt = parsed_dt.astimezone(pytz.utc)
print(utc_dt)

方法二:用python-dateutil自动解析(兼容更多格式)

如果遇到月份/日期是单数字的情况(比如2018-2-1T13:50:29-04:00),strptime的%m/%d要求两位数字,此时用dateutil库能自动识别格式,无需手动指定:

  1. 先安装依赖:pip install python-dateutil
  2. 代码示例:
from datetime import datetime
from dateutil import parser
import pytz

raw_dt = "2018-2-1T13:50:29-04:00"
# 自动识别日期格式和时区偏移
parsed_dt = parser.parse(raw_dt)
# 转换为UTC时区
utc_dt = parsed_dt.astimezone(pytz.utc)
print(utc_dt)

注意事项

  • 使用%z格式符需确保Python版本≥3.2;
  • 只有带时区感知的datetime对象才能调用astimezone()方法转换时区,否则会抛出ValueError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 18:42:16