首页 > 解决方案 > 在 Django 中使用时间的模板标签

问题描述

如果日期之间的差异不超过一周,请告诉我如何使用 Django 以这种格式输出时间,例如“上周一”或“上周五”。

标签: pythondjango

解决方案


我会为此编写一个自定义过滤器(假设这value是过去的日期)。这是快速而肮脏的,您可能需要更多逻辑来适应跨越午夜的时间,以准确报告“今天早些时候”、“昨天”等。

from datetime import datetime
from django import template

register = template.Library()

@register.filter(name='relative_date')
def relative_date(value):
    timespan = datetime.now() - value

    if timespan.days == 0:
        return 'Within the last day'

    if timespan.days == 1:
        return 'Yesterday'
    
    if timespan.days <= 7:
        return f"Last {value.strftime('%A')}"

    return value.strftime('%Y-%m-%d') # Or whatever format you want to use for older dates

然后在您的模板中:

{{ some_date|relative_date }}

阅读自定义模板标签和过滤器文档,了解有关包含此函数的文件应位于何处以及如何将其导入模板文件的信息。


推荐阅读