【问题标题】:Django "naturalday" template filter: fall back to formatted date?Django“naturalday”模板过滤器:回退到格式化日期?
【发布时间】:2013-08-07 07:22:27
【问题描述】:
我使用的是Django's naturalday template tag,但是如果提供的日期不是今天、明天或昨天,我该如何格式化日期字符串?
这是我的模板字符串:
Date: {{ result_date|naturalday }}
如果result_date 是今天、昨天或明天,则模板显示自然字符串。但如果是 10 天前,如何控制日期格式显示为“7 月 25 日”?
文档说:
对于当天或一天内的日期,返回“今天”,
“明天”或“昨天”,视情况而定。否则,格式化日期
使用传入的格式字符串。
“传入的格式字符串”是什么意思?
【问题讨论】:
标签:
django
django-templates
django-template-filters
【解决方案1】:
您应该检查示例:
示例(当“今天”是 2007 年 2 月 17 日时):
- 2007 年 2 月 16 日变成昨天。
- 2007 年 2 月 17 日变为今天。
- 2007 年 2 月 18 日变成明天。
- 任何其他日期都根据给定参数或 DATE_FORMAT 设置(如果未给出参数)进行格式化。
然后关于DATE_FORMAT:
默认值:'N j, Y'(例如 2003 年 2 月 4 日)
用于在任何部分显示日期字段的默认格式
系统的。请注意,如果 USE_L10N 设置为 True,则
语言环境决定的格式具有更高的优先级,将被应用
反而。查看允许的日期格式字符串。
所以如果没有提供格式字符串参数并且DATE_FORMAT 没有在settings.py 中指定,它将回退到Feb. 17, 2007。
alecxe 的回答中提供了正常的后备格式字符串。
【解决方案2】:
在: 之后传递格式,如date 过滤器:
Date: {{ result_date|naturalday:"F d" }}
-
F 是月份的文本表示,例如July。
-
d 是一个月中的某一天,2 位数字,前导零,例如25。
希望对您有所帮助。