在Python 3.3中格式化时间字符串

时间:2014-02-07 02:48:16

标签: python python-3.x datetime python-3.3

我正在尝试将当前本地时间作为字符串格式化:year-month-day hour:mins:seconds。我将用于记录。通过阅读文档,我可以通过以下方式完成:

import time
'{0:%Y-%m-%d %H:%M:%S}'.format(time.localtime())

然而我收到错误:

Traceback (most recent call last):
File "", line 1, in 
ValueError: Invalid format specifier

我做错了什么?还有更好的方法吗?

3 个答案:

答案 0 :(得分:31)

time.localtime返回time.struct_time,它不支持类似strftime的格式。

传递支持strftime格式的datetime.datetime对象。 (见datetime.datetime.__format__

>>> import datetime
>>> '{0:%Y-%m-%d %H:%M:%S}'.format(datetime.datetime.now())
'2014-02-07 11:52:21'

答案 1 :(得分:14)

您也可以使用time.strftime

time.strftime('{%Y-%m-%d %H:%M:%S}')

答案 2 :(得分:7)

对于Python的较新版本(3.6 +,https://www.python.org/dev/peps/pep-0498/纯粹是出于完整性考虑),您可以使用较新的字符串格式,即。

import datetime

today = datetime.date.today()

f'{today:%Y-%m-%d}'
> '2018-11-01'