2013-05-03 95 views
1

我需要解析日期和时间。这里是我有:无法用Python解析日期

import time 
a = time.strptime('Apr 28 2013 23:01', "%b %d %y %H:%M") 
print a 

但它给了我

Traceback (most recent call last): 
    File "/home/aaa/Documents/python_test.py", line 17, in <module> 
    a = time.strptime('Apr 28 2013 23:01', "%b %d %y %H:%M") 
    File "/usr/lib/python2.7/_strptime.py", line 467, in _strptime_time 
    return _strptime(data_string, format)[0] 
    File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime 
    (data_string, format)) 
ValueError: time data 'Apr 28 2013 23:01' does not match format '%b %d %y %H:%M' 

我在做什么错?

回答

11

%y应该%Y一个4位数的年份......

docs

%y Year without century as a decimal number [00,99].  
%Y Year with century as a decimal number. 
0

您可以

import time 
a = time.strptime('Apr 28 2013 23:01', "%b %d %Y %H:%M") 
print time.strftime("%d/%m/%Y",a) 

Y。紧随其后的是代码转换线,并给出了导致

28/04/2013

-2

乔恩的答案当然是正确的,但你注意到这些事情可能很难找到。

对于调试一般建议strptime问题,我建议使用您使用的解析格式字符串打印出已知datetime

from datetime import datetime 

d = datetime(2013, 4, 28, 23, 1) 
print d.strftime("%b %d %y %H:%M") 
print 'Apr 28 2013 23:01' 

输出线的视觉比较:

Apr 28 13 23:01 
Apr 28 2013 23:01 

很快就会发现问题,并且在格式字符串正确的情况下也能正常工作,但是您正在使用不同的语言环境(例如,在西班牙语中,希望'Abr'代替'Apr')

+0

我有'四月'但不是4. – 2013-05-03 11:31:55

+1

我不确定你的意思是什么。我在代码中看不到'April',打印语句的输出也不包含'4'。 – Anthon 2013-05-03 12:28:35