python - 在 Django 中使用时间的模板标签
问题描述
如果日期之间的差异不超过一周,请告诉我如何使用 Django 以这种格式输出时间,例如“上周一”或“上周五”。
解决方案
我会为此编写一个自定义过滤器(假设这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 }}
阅读自定义模板标签和过滤器文档,了解有关包含此函数的文件应位于何处以及如何将其导入模板文件的信息。
推荐阅读
- java - 错误:尝试在空对象引用上调用虚拟方法...
- .net - 获取在自定义用户控件中声明的事件的所有事件处理程序
- php - Laravel Dusk - 无法在 GitLab CI 上运行
- sql - SQL 在 MS SQL Server Management Studio 中删除没有修剪功能的查询中的空格
- reactjs - 从 API 响应向组件发送数组
- javascript - 鼠标滚轮事件时页面振动
- docker - dockerd 没有在 nixos 上运行
- c# - 将多维数组转换为json
- ruby-on-rails - 使用 Dynamoid 将对象保存到 DynamoDB 时出现问题
- c# - 生成具有多个同名节点的 JSON