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

求助:时间数据格式不匹配引发ValueError报错,修改代码仍未解决

时间格式匹配报错问题解决

我使用他人编写的脚本(该脚本已正常运行数月),但遇到如下报错:

Exception has occurred: ValueError
time data '2022-12-28 14:43:08.908271' does not match format '%m/%d/%Y %I:%M:%S %p' (match)
  File ". . .\res-script.py", line 19, in <module>
    end = pd.to_datetime(yesterday, format="%m/%d/%Y %I:%M:%S %p").normalize()

我尝试了以下修改,但仍出现相同报错:

today_date = datetime.today().strftime('%Y-%m-%d')
yesterday = datetime.today()

end = pd.to_datetime(yesterday, format='%Y-%m-$d %H:%M:%S').normalize()

问题分析与解决方法

  1. 核心问题:格式不匹配
    原代码指定的格式%m/%d/%Y %I:%M:%S %p是「月/日/年 12小时制时间+上/下午标识」,但实际传入的时间字符串是'2022-12-28 14:43:08.908271',对应格式是「年-月-日 24小时制时间+毫秒」,两者完全不匹配,所以触发报错。

  2. 你的修改里的错误

    • 格式字符串存在笔误:%Y-%m-$d中的$d应改为%d
    • 未覆盖时间字符串里的毫秒部分(.908271)
    • 若yesterday已经是datetime对象(比如你修改后用datetime.today()赋值),无需再用pd.to_datetime转换,直接调用.normalize()即可。
  3. 正确的解决方式

    • 如果yesterday是datetime对象:
      from datetime import timedelta
      yesterday = datetime.today() - timedelta(days=1) # 注:你原代码里yesterday赋值为today,应该要减一天才对
      end = yesterday.normalize()
      
    • 如果yesterday是字符串:
      要么指定完全匹配的格式:
      end = pd.to_datetime(yesterday, format='%Y-%m-%d %H:%M:%S.%f').normalize()
      
      要么让pandas自动推断格式(适合格式不固定的场景):
      end = pd.to_datetime(yesterday).normalize()
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:45:50