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

使用Python datetime的strptime方法时遇格式错误及运行致命问题

解决datetime.strptime解析日志时间的格式错误问题

你遇到的问题核心是没有正确提取日志中的时间子串,且格式字符串与时间格式不匹配,导致strptime触发ValueError。以下是具体解决步骤:

1. 提取日志中的时间部分

日志里的时间被[]包裹,直接把整条日志传给strptime肯定会失败,得先把时间字符串单独提取出来。推荐用正则表达式精准匹配:

import re
log_line = '[04/10/2024:23:18:39] PUT  "/new/origin" HTTP/1.1 200 256'
# 匹配[]内的所有内容
time_match = re.search(r'\[([^\]]+)\]', log_line)
if time_match:
    time_str = time_match.group(1)  # 得到 '04/10/2024:23:18:39'

2. 使用正确的格式字符串解析时间

你的时间格式是日/月/年:时:分:秒,对应的strptime格式符是%d/%m/%Y:%H:%M:%S,完整代码:

from datetime import datetime

try:
    dt = datetime.strptime(time_str, '%d/%m/%Y:%H:%M:%S')
    print(f"解析成功: {dt}")  # 输出 2024-10-04 23:18:39
except ValueError as e:
    print(f"解析失败: {e}")

常见坑点提醒

  • 别搞混%d(日期)和%m(月份):如果写成%m/%d/%Y,当日期大于12时会直接报错
  • 必须保证格式字符串的分隔符和时间字符串完全一致:比如时间里的:和/不能漏写或写错
  • 一定要先提取时间子串,不要把日志里的PUT、URL等无关内容传给strptime

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 22:46:02