1

我需要解析日期和时间。这是我所拥有的:

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'

我究竟做错了什么?

4

3 回答 3

11

%y应该是%Y4位数的年份...

文档

%y  Year without century as a decimal number [00,99].    
%Y  Year with century as a decimal number.
于 2013-05-03T09:19:04.893 回答
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

于 2013-05-03T09:28:51.837 回答
-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')

于 2013-05-03T09:29:01.417 回答