1

我的输入字符串是'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 ' 
4

4 回答 4

4

编辑:
正如约翰提到的,让自己更轻松,并删除前导和尾随空格。

另一个想法:
您当前的语言环境可能没有将“MAR”指定为月份的缩写。

这段代码的输出给出了什么?:

import locale
locale.getdefaultlocale()

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

Academic note:
Oddly your code works on Windows XP Python 2.5.5 with the extraneous spaces:

>>> 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)
于 2010-03-17T06:44:23.600 回答
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)
>>>
于 2010-03-17T06:28:06.030 回答
2

您的格式字符串有一个前导空格和一个尾随空格,但您的输入字符串没有。删除开始引号之后和结束引号之前的空格。

于 2010-03-17T06:28:16.670 回答
0

试试这个:

db_inst.HB_Create_Ship_Date = datetime.strptime(fields[7],"%d-%b-%Y %H:%M:%S")

此外,请查看此处作为 Python 中 DateTime 格式的参考。

于 2010-03-17T06:30:51.187 回答