Có hai cách để thực hiện. Cách tiếp cận trực tiếp sẽ được chỉ cần gọi (và in) phương pháp strftime() trong mẫu của bạn, ví dụ
{{ car.date_of_manufacture.strftime('%Y-%m-%d') }}
khác, cách tiếp cận trông dể thương tốt hơn sẽ được xác định bộ lọc riêng của bạn, ví dụ:
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
(Bộ lọc này dựa trên babel vì các lý do liên quan đến i18n, nhưng bạn cũng có thể sử dụng strftime). Ưu điểm của bộ lọc là bạn có thể viết
{{ car.date_of_manufacture|datetime }}
{{ car.date_of_manufacture|datetime('full') }}
trông đẹp hơn và dễ bảo trì hơn. Một bộ lọc phổ biến khác cũng là bộ lọc "timedelta", bộ lọc này đánh giá một thứ gì đó như "viết cách đây 8 phút". Bạn có thể sử dụng babel.dates.format_timedelta
cho điều đó và đăng ký nó làm bộ lọc tương tự như ví dụ về ngày giờ được đưa ra ở đây.
đã bạn thực sự cố gắng đó? gọi nó trực tiếp dẫn đến: 'thời gian.struct_time object 'không có thuộc tính' strftime ' –
Theo câu hỏi của bạn, bạn đang nói về một cái gì đó khác nhau. Ban đầu, chủ đề này đã định dạng một đối tượng 'datetime' từ mô-đun python' datetime', nhưng bạn đang cố định dạng một đối tượng 'struct_time' từ mô-đun' time' ở mức thấp. Các đối tượng 'struct_time' không có phương thức' strftime() ', mặc dù có thể có phương thức' strftime() 'toàn cục trong gói thời gian. Nhưng tôi khuyên bạn nên sử dụng gói 'datetime' cấp cao (nền độc lập) thay thế. – tux21b
Đúng, tôi đã sử dụng time.time(), và bây giờ nên xem xét liệu tôi có thực sự muốn điều đó hay datetime.datetime.today() Cảm ơn –