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 是月份的文本表示,例如Julyd 是一个月中的某一天,2 位数字,前导零,例如25

希望对您有所帮助。

【讨论】:

以上是关于Django“naturalday”模板过滤器:回退到格式化日期?的主要内容,如果未能解决你的问题,请参考以下文章

Django模板之模板变量过滤器

Django-模板语言和过滤器

Django 模板过滤器语法错误

django自定义过滤器及模板标签

Django Template模板层 (下) ----------- 过滤器人性化过滤器模板继承模板加载

Django-----视图层,模板层