有没有直接的方法将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
答案 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