使用 str.format() 格式化 Python 日期对象如何工作?

How does formatting a Python date object with str.format() work?

我最近看到了这个字符串格式示例:

>>> from datetime import date
>>> 'Today is {0:%A}'.format(date.today())
'Today is Thursday'

我想知道它是如何工作的。

date class 定义了 __format__() 魔术方法,str.format() 调用该方法以生成对象的“格式化”字符串表示形式。引用 date.__format__() 的文档:

Same as date.strftime(). This makes it possible to specify a format string for a date object in formatted string literals and when using str.format(). For a complete list of formatting directives, see strftime() and strptime() Behavior.

因此,'{:%A}'.format(date.today())等同于date.today().strftime('%A')