Hay dos maneras de hacerlo. El enfoque directo sería simplemente llamar a (e imprimir) el método de strftime() en su plantilla, por ejemplo
{{ car.date_of_manufacture.strftime('%Y-%m-%d') }}
Otro, un poquitito mejor enfoque sería definir su propio filtro, por ejemplo:
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
(Este filtro está basado en babel por razones relacionadas con i18n, pero también puede usar strftime). La ventaja del filtro es que puede escribir
{{ car.date_of_manufacture|datetime }}
{{ car.date_of_manufacture|datetime('full') }}
que se ve mejor y es más fácil de mantener. Otro filtro común es también el filtro "timedelta", que evalúa algo así como "escrito hace 8 minutos". Puede usar babel.dates.format_timedelta
para eso y registrarlo como un filtro similar al ejemplo de fecha y hora proporcionado aquí.
¿Realmente tratar eso? llamarlo directamente da como resultado: 'tiempo'.struct_time object 'no tiene atributo' strftime ' –
Según su pregunta, usted está hablando de algo diferente. Inicialmente, este hilo trata sobre formatear un objeto 'datetime' del módulo python' datetime', pero está tratando de formatear un objeto 'struct_time' del módulo' time' de bajo nivel. Los objetos 'struct_time' no tienen un método' strftime() ', aunque podría haber un método global' strftime() 'en el paquete de tiempo. Pero le recomiendo que use el paquete de alto nivel (independiente de la plataforma) 'datetime' en su lugar. – tux21b
Correcto, he estado usando time.time(), y ahora debería considerar si realmente quiero eso, o datetime.datetime.today() Gracias –