Skip to main content
 首页 » 编程设计

python之使用 datetime.strptime 时的故障排除 'ValueError: time data ... does not match format'

2025年05月04日13bluestorm

我的输入字符串是 '16-MAR-2010 03:37:04' 我想将它存储为日期时间。

我正在尝试使用:

db_inst.HB_Create_Ship_Date = datetime.strptime(fields[7]," %d-%b-%Y %H:%M:%S ")  
fields[7] = '16-MAR-2010 03:37:04'  

我收到一个错误:

::ValueError: time data '16-MAR-2010 03:37:04' does not match format ' %d-%b-%Y %H:%M:%S '  

请您参考如下方法:

编辑:
作为John mentions , 让您自己更轻松并删除前导和尾随空格。

另一个想法:
您当前的locale不得将“MAR”指定为月份缩写。

这段代码的输出是什么?:

import locale 
locale.getdefaultlocale() 

我在 Linux 机器(Ubuntu 9.10、Python 2.6.4)上测试了你的代码并得到了 ValueError。
我删除了空格,更改为非英语语言环境(捷克语),并得到了 ValueError。

学术笔记:
奇怪的是,您的代码在带有多余空格的 Windows XP Python 2.5.5 上运行:

>>> from datetime import datetime 
>>> dt = '16-MAR-2010 03:37:04' 
>>> datetime.strptime(dt, " %d-%b-%Y %H:%M:%S ") 
datetime.datetime(2010, 3, 16, 3, 37, 4)