擅长:python、mysql、java
<p>有两种方法。直接的方法是简单地调用(并打印)模板中的strftime()方法,例如</p>
<pre><code>{{ car.date_of_manufacture.strftime('%Y-%m-%d') }}
</code></pre>
<p>另一个更好的方法是定义自己的过滤器,例如:</p>
<pre><code>from flask import Flask
import babel
app = Flask(__name__)
def format_datetime(value, format='medium'):
if format == 'full':
format="EEEE, d. MMMM y 'at' HH:mm"
elif format == 'medium':
format="EE dd.MM.y HH:mm"
return babel.dates.format_datetime(value, format)
app.jinja_env.filters['datetime'] = format_datetime
</code></pre>
<p>(这个过滤器基于关于i18n的原因基于babel,但是您也可以使用strftime)。过滤器的优点是,您可以编写</p>
<pre><code>{{ car.date_of_manufacture|datetime }}
{{ car.date_of_manufacture|datetime('full') }}
</code></pre>
<p>它看起来更好,更易于维护。另一个常见的过滤器也是“timedelta”过滤器,其计算结果类似于“8分钟前编写的”。您可以为此使用<code>babel.dates.format_timedelta</code>,并将其注册为类似于此处给出的datetime示例的筛选器。</p>