Python - 如何将ctime转换为'%m /%d /%Y%H:%M:%S'

时间:2013-11-06 23:51:14

标签: python datetime

有没有直接的方法将ctime值转换为'%m /%d /%Y%H:%M:%S'格式?

例如,将“Wed Nov 6 15:43:54 2013”​​转换为“11/06/2013 15:43:54”

我尝试了以下但是没有给我我想要的格式,即“11/06/2013 15:43:54”:

>>> t = time.ctime()
>>> f = datetime.datetime.strptime(t, '%a %b %d %H:%M:%S %Y')
>>> print f
2013-11-06 15:43:54

但如果我将它直接传递给time.strftime,它将需要9项序列:

>>> n = time.strftime(t, '%D %H:%M:%S')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: argument must be 9-item sequence, not str

2 个答案:

答案 0 :(得分:5)

在您的示例中,您可以使用datetime.now

from datetime import datetime

d = datetime.now()
d.strftime('%m/%d/%Y %H:%M:%S')
Out[7]: '11/06/2013 18:59:38'

但是。如果您从其他地方接收ctime样式字符串,请使用datetime.strptime进行解析,然后使用日期时间strftime(而非time'以您希望的方式对其进行格式化)。

from datetime import datetime
import time
d = datetime.strptime(time.ctime(),"%a %b %d %H:%M:%S %Y")

d.strftime('%m/%d/%Y %H:%M:%S')
Out[9]: '11/06/2013 19:01:11'

答案 1 :(得分:1)

您必须使用您想要的说明符格式化字符串

import time
import datetime
t = time.ctime()
f = datetime.datetime.strptime(t, '%a %b %d %H:%M:%S %Y')
print f                               #with no specifier
print f.strftime('%m/%d/%Y %H:%M:%S') #with your specifier