4

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

2 回答 2

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 (而不是's)datetime.strptime以您想要的方式对其进行格式化。strftimetime

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'
于 2013-11-07T00:03:29.730 回答
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
于 2013-11-07T00:08:39.717 回答