我的输入字符串是'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 '
答案 0 :(得分:4)
编辑:
作为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)
答案 1 :(得分:2)
丢失格式正面和背面的空格。我认为strptime记录的变化取决于为你的盒子编写C运行时的人的想法。但似乎我错了。这意味着Python中存在一个错误。
Windows上的Python 2.6.4不喜欢前导尾随空格;见下文。
* x用户,你发现了什么?
与此同时,使用最小公分母 - 丢失空格。正如亚当所提到的,你可能还有一个语言环境问题。
有空格:
>>> datetime.datetime.strptime('16-MAR-2010 03:37:04'," %d-%b-%Y %H:%M:%S ")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\python26\lib\_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data '16-MAR-2010 03:37:04' does not match format ' %d-%b-%Y %H
:%M:%S '
没有空格:
>>> datetime.datetime.strptime('16-MAR-2010 03:37:04',"%d-%b-%Y %H:%M:%S")
datetime.datetime(2010, 3, 16, 3, 37, 4)
>>>
答案 2 :(得分:2)
您的格式字符串有一个前导空格和一个尾随空格,但您的输入字符串没有。删除起始引号后和结束引号前的空格。
答案 3 :(得分:0)
试试这个:
db_inst.HB_Create_Ship_Date = datetime.strptime(fields[7],"%d-%b-%Y %H:%M:%S")
另外,在Python中使用look here作为DateTime格式的参考。