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

如何在Python 3中从字符串提取日期时间并解决strptime格式报错问题?

问题原因

报错的核心是格式模板和输入字符串的字段规则不匹配,主要有两个触发点:

  • 最常见的原因:月、日的格式符顺序写反
    输入字符串06/30/16是「月/日/年」的顺序,06是月份、30是日期,但你使用的格式符%d/%m/%y是「日/月/年」的规则:
    • %d 匹配1~31范围的日期
    • %m 匹配1~12范围的月份
      模板会尝试把第二个字段30识别为月份,不存在合法的30月,直接触发格式不匹配错误。
  • 潜在原因:系统区域设置非英文,%a无法匹配英文星期缩写
    %a默认匹配当前系统locale对应的星期缩写,如果你的系统是中文locale,%a只会识别周四这类中文缩写,不会匹配英文Thu。

解决方法

第一步:修正月日格式符顺序

把%d/%m/%y调整为%m/%d/%y,匹配输入字符串的月/日/年顺序:

from datetime import datetime
date_time_obj = datetime.strptime("06/30/16(Thu)12:41:05",'%m/%d/%y(%a)%H:%M:%S')

第二步:适配非英文系统的星期缩写匹配

如果修正顺序后仍报错,可在解析前临时把时间相关的locale切换为英文,解析完成后可按需改回原设置:

from datetime import datetime
import locale
# Windows系统填写'English_US',Linux/macOS系统填写'en_US.UTF-8'
locale.setlocale(locale.LC_TIME, 'English_US')
date_time_obj = datetime.strptime("06/30/16(Thu)12:41:05",'%m/%d/%y(%a)%H:%M:%S')

修正后即可正常解析得到时间对象:datetime.datetime(2016, 6, 30, 12, 41, 5)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:54:03