将字符串日期对象转换为日期的Python给出了valuerror

时间:2015-09-18 12:50:28

标签: python date datetime

我正在尝试将字符串日期对象转换为python中的日期对象。 到目前为止我这样做了

 old_date = '01 April 1986' 
 new_date = datetime.strptime(old_date,'%d %M %Y')
 print new_date

但我收到以下错误。

  

ValueError:时间数据'1986年4月''与格式'%d%M%Y'

不匹配

有什么猜测吗?

2 个答案:

答案 0 :(得分:4)

%M解析分钟,一个数值,而不是一个月。您的日期将月份指定为'April',因此请使用%B来解析名为的月份:

>>> from datetime import datetime
>>> old_date = '01 April 1986' 
>>> datetime.strptime(old_date,'%d %B %Y')
datetime.datetime(1986, 4, 1, 0, 0)

来自strftime() and strptime() Behavior section

  

%B
  月份为区域设置的全名。
  1月,2月,...,12月(en_US);
  Januar,Februar,...,Dezember(de_DE)

     

%M
  分钟为零填充十进制数。
  00,01,...,59

答案 1 :(得分:0)

您可以首先猜测字符串使用的日期格式的类型,然后再转换为系统识别的相同日期格式。 我编写了一个简单的date_tools实用程序,您可以在[https://github.com/henin/date_tools/]

中找到

安装:pip安装日期工具

用法:

  

从date_tools导入date_guesser

     

从日期时间导入日期时间

     

old_date ='1986年4月1日'

     

date_format = date_guesser.guess_date_format(旧日期)

     

new_date = datetime.strptime(old_date,date_format)

     

打印(新日期)