将字符串转换为日期python

and*_*ers 0 python datetime strptime

我正在按照以下指南介绍如何在python中将字符串转换为日期对象,但我遇到了一个我不太明白的错误.

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

buildDateArray.append(dt.strptime(date,"%y-%b-%d %H:%M:%S"))
Run Code Online (Sandbox Code Playgroud)

但我得到了轰鸣声错误:

    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'
Run Code Online (Sandbox Code Playgroud)

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

你能看出错误是什么吗?

Mar*_*ers 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)
Run Code Online (Sandbox Code Playgroud)

当您遇到这样的问题时,请尝试将其缩小到组件; 你可以尝试例如一年的一部分,它会失败依然,但使用不同的错误给你一个很大的提示,为什么它可能是失败的:

>>> 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
Run Code Online (Sandbox Code Playgroud)

由于您使用的是datetime.strptime()类方法,你需要寻找一个正确的文档,在发现strftime()strptime()行为 ; 它详细说明了每种模式的匹配.