Django“naturalday”模板过滤器:回退到格式化日期?
Posted
技术标签:
【中文标题】Django“naturalday”模板过滤器:回退到格式化日期?【英文标题】:Django "naturalday" template filter: fall back to formatted date? 【发布时间】:2013-08-07 07:22:27 【问题描述】:我使用的是Django's naturalday template tag,但是如果提供的日期不是今天、明天或昨天,我该如何格式化日期字符串?
这是我的模板字符串:
Date: result_date|naturalday
如果result_date
是今天、昨天或明天,则模板显示自然字符串。但如果是 10 天前,如何控制日期格式显示为“7 月 25 日”?
文档说:
对于当天或一天内的日期,返回“今天”, “明天”或“昨天”,视情况而定。否则,格式化日期 使用传入的格式字符串。
“传入的格式字符串”是什么意思?
【问题讨论】:
【参考方案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
。
希望对您有所帮助。
【讨论】:
以上是关于Django“naturalday”模板过滤器:回退到格式化日期?的主要内容,如果未能解决你的问题,请参考以下文章