如何检查日期是否为未来日期?Jinja2模板实现遇报错求助
解决Jinja2模板日期比较及
as_timestamp未定义问题 - 错误原因:你用到的
as_timestamp不是Jinja2的内置函数,所以触发了未定义错误。 - 实现未来日期显示的正确方式:
Jinja2支持直接比较datetime.date或datetime.datetime类型的对象,不需要额外转时间戳,写法更简洁。如果你的bibjson.discontinued_date和time.today()都是日期对象,直接用以下代码:
{% if bibjson.discontinued_date > time.today() %} <p>This date should be displayed only if in the future: {{ bibjson.discontinued_date.strftime("%d %B %Y") }}</p> {% endif %}
如果你确实需要通过时间戳比较(比如涉及时区或复杂时间计算),可以用日期对象的timestamp()方法,但要注意date类型需要先转为datetime类型:
{% set today = datetime.datetime.combine(time.today(), datetime.time.min) %} {% set discontinued_date = datetime.datetime.combine(bibjson.discontinued_date, datetime.time.min) %} {% if discontinued_date.timestamp() > today.timestamp() %} <p>This date should be displayed only if in the future: {{ bibjson.discontinued_date.strftime("%d %B %Y") }}</p> {% endif %}
注意点:
- 调用
time.today()要加括号,否则是引用函数本身而非当前日期值 - 原代码里的
date变量未定义,要替换为实际的日期变量bibjson.discontinued_date
内容的提问来源于stack exchange,提问作者Malvinka
相关产品推荐
相关产品推荐

