将字符串转换为日期python

时间:2015-01-07 14:37:24

标签: python datetime strptime

我是following关于如何在python中将字符串转换为日期对象的以下指南,但我遇到了一个我不太了解的错误。

我正在尝试执行以下操作:

buildDateArray.append(dt.strptime(date,"%y-%b-%d %H:%M:%S"))

但我得到了轰鸣声错误:

    buildDateArray.append(dt.strptime(date,"%y-%b-%d %H:%M:%S"))
  File "/usr/lib64/python2.6/_strptime.py", line 325, in _strptime
    (data_string, format))
ValueError: time data '2014-11-17 00:00:00' does not match format '%y-%b-%d %H:%M:%S'

我不明白为什么'2014-11-17 00:00:00'与格式不匹配'%y-%b-%d%H:%M: %S'

你能看出错误是什么吗?

2 个答案:

答案 0 :(得分:7)

您的格式有两个问题:

  • %y匹配两位数年,但您的年份包含4.使用%Y(大写Y)代替。

  • %b匹配名为的月份,缩写;使用%m来匹配数字月份;您需要在此处匹配11,而不是Nov

演示:

>>> from datetime import datetime
>>> datetime.strptime('2014-11-17 00:00:00', '%Y-%m-%d %H:%M:%S')
datetime.datetime(2014, 11, 17, 0, 0)

当您遇到这样的问题时,请尝试将其缩小到组件;你本来可以尝试只是年份部分,但它仍然失败了,但是有一个不同的错误给你一个很大的暗示,为什么它可能会失败:

>>> datetime.strptime('2014', '%y')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/mpietre/Development/Library/buildout.python/parts/opt/lib/python2.7/_strptime.py", line 328, in _strptime
    data_string[found.end():])
ValueError: unconverted data remains: 14

由于您使用的是datetime.strptime() class method,因此您需要查看strftime() and strptime() Behavior上找到的正确文档;它详细说明了每个模式匹配的内容。

答案 1 :(得分:1)

您的格式存在两个问题

  • 使用大写Y匹配四位数年份而不是小写y(仅匹配两位数)
  • 使用%m代替%b来匹配数字月份而不是缩写月份(即。11 vs Nov

您的最终格式为:

"%Y-%m-%d %H:%M:%S"