Il y a deux façons de le faire. L'approche directe serait d'appeler simplement (et imprimer) la méthode strftime() dans votre modèle, par exemple
{{ car.date_of_manufacture.strftime('%Y-%m-%d') }}
Une autre approche sightly mieux serait de définir votre propre filtre, par exemple:
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
(Ce filtre est basé sur babel pour des raisons concernant i18n, mais vous pouvez aussi utiliser strftime). L'avantage du filtre est, que vous pouvez écrire
{{ car.date_of_manufacture|datetime }}
{{ car.date_of_manufacture|datetime('full') }}
qui semble plus agréable et est plus maintenable. Un autre filtre commun est également le filtre "timedelta", qui évalue quelque chose comme "écrit il y a 8 minutes". Vous pouvez utiliser babel.dates.format_timedelta
pour cela et l'enregistrer en tant que filtre similaire à l'exemple datetime donné ici.
Avez-vous essayé en fait cela? l'appeler directement entraîne: 'temps.objet struct_time 'n'a pas d'attribut' strftime ' –
Selon votre question, vous parlez de quelque chose de différent. Initialement, ce sujet traitait de la mise en forme d'un objet 'datetime' à partir du module python' datetime', mais vous essayez de formater un objet 'struct_time' à partir du module' time' de bas niveau. Les objets 'struct_time' n'ont pas de méthode' strftime() ', bien qu'il puisse y avoir une méthode globale' strftime() 'dans le paquet temporel. Mais je vous recommande d'utiliser à la place le paquet 'datetime' de haut niveau (indépendant de la plate-forme). – tux21b
Correct, j'ai utilisé time.time(), et devrait maintenant considérer si je veux vraiment cela, ou datetime.datetime.today() Merci –