【问题标题】: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。

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2017-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-23
        • 2023-03-16
        • 2014-10-11
        • 2015-06-18
        • 1970-01-01
        相关资源
        最近更新 更多