You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模板中对比datetime值实现事件时间段差异化显示

你的代码出错的核心原因:Django模板的{% if %}标签内部不需要再用{{ }}包裹变量,你原来的写法是把两个包含{{的字面量字符串做对比,自然永远不会相等。

以下是两种可直接在模板层实现需求的方案:

方案1:直接对比日期属性(更推荐,性能更高)

直接调用datetime对象自带的date属性获取日期部分做对比,不需要额外格式化字符串:

<li>
    {% if date.start.date == date.end.date %}
        {{ date.start|date:"D d M Y" }} {{ date.start|time:"H:i" }} to {{ date.end|time:"H:i" }}
    {% else %}
        {{ date.start|date:"D d M Y H:i" }} to {{ date.end|date:"D d M Y H:i" }}
    {% endif %}
</li>

方案2:按格式化字符串对比(适用于有特殊日期格式适配的场景)

如果需要严格按指定格式的日期结果对比,直接在if条件内调用过滤器即可,不需要嵌套变量输出语法:

<li>
    {% if date.start|date:'D d M Y' == date.end|date:'D d M Y' %}
        {{ date.start|date:"D d M Y" }} {{ date.start|time:"H:i" }} to {{ date.end|time:"H:i" }}
    {% else %}
        {{ date.start|date:"D d M Y H:i" }} to {{ date.end|date:"D d M Y H:i" }}
    {% endif %}
</li>

如果你的项目开启了时区支持,只要确保存储的datetime值已经做了正确的时区转换,上述两种方案都可以正常生效。

内容的提问来源于stack exchange,提问作者Simon Powell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 23:54:04