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

如何使用strptime解析带时分分隔的UTC偏移量时间字符串?

解决带冒号时区偏移的字符串转datetime问题

哈哈,这个坑我踩过!Python标准库的strptime里的%z指令确实只认+HHMM这种不带冒号的时区格式,碰到+HH:MM的情况就得绕个小弯,给你分享几个实用的解决办法:

  • 手动修正时区格式(兼容所有Python版本)
    最简单的思路就是把字符串里时区部分的冒号去掉,转换成%z能识别的格式。具体操作是截取字符串到时区冒号前的部分,再拼接冒号后的两位数字:

    from datetime import datetime
    
    time_str = "2018-04-03 02:59:59+00:00"
    # 去掉时区里的冒号:把+00:00改成+0000
    modified_time_str = time_str[:-3] + time_str[-2:]
    dt_obj = datetime.strptime(modified_time_str, "%Y-%m-%d %H:%M:%S%z")
    print(dt_obj)  # 输出:2018-04-03 02:59:59+00:00
    
  • 用Python 3.7+原生的fromisoformat(最简洁)
    从Python 3.7开始,datetime类新增了fromisoformat方法,它原生支持带冒号的时区偏移格式,连格式字符串都不用写,直接解析:

    from datetime import datetime
    
    time_str = "2018-04-03 02:59:59+00:00"
    dt_obj = datetime.fromisoformat(time_str)
    print(dt_obj)  # 输出:2018-04-03 02:59:59+00:00
    

    这个方法最省心,如果你用的Python版本在3.7及以上,优先选它。

  • 借助第三方库python-dateutil(万能格式解析)
    如果你需要兼容更老的Python版本,或者要处理各种奇奇怪怪的时间格式,python-dateutil的parser模块能自动识别几乎所有常见的时间格式,包括带冒号的时区:
    先安装库:

    pip install python-dateutil
    

    然后解析:

    from dateutil import parser
    
    time_str = "2018-04-03 02:59:59+00:00"
    dt_obj = parser.parse(time_str)
    print(dt_obj)  # 输出:2018-04-03 02:59:59+00:00
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:39:44