django模板中的DateTime比较

时间:2013-03-28 06:42:48

标签: django

我在比较Django模板中的两个日期时遇到了问题。

我的模型中有一个日期字段:

 date_created = models.DateTimeField(auto_now=True)

我想比较date_created到今天的日期。所以这就是我在django模板中所做的事情:

{% if x.for_meeting.date_created < today%} # (x is the instance of MeetingRecord class where for_meeting field is Foreign key to Meeting table Where date_created)

现在我正在计算今天的视图:

today =  datetime.now().strftime("%B %d, %Y,%I:%M %P")

不幸的是我无法比较日期。

请告诉我,我在这里做错了什么。

3 个答案:

答案 0 :(得分:7)

today =  datetime.now()

{% if x.for_meeting.date_created.date < today.date and x.for_meeting.date_created.time < today.time  %}

答案 1 :(得分:0)

您不必(在视图中)创建Today变量,只需使用现有的{%now%}模板标签即可。

并且,在Django模板中比较DateTimeField对象时,请确保在相同的时区中进行比较。您可能需要对此进行明确说明,以使其更清晰并与时区更改兼容:

{% load tz %}

{% if date_created|utc < now|utc %}

如果dead_deadline为None或=>当前日期时间,则此结果为False。

默认情况下(对我而言),date_created是在数据库时间(UTC)中,现在是在settings.py中设置的本地时间。

还要确保您比较的值具有有意义的值。

PS。如果尝试使用localtime过滤器将日期时间对象转换为“自Unix纪元(1970年1月1日00:00:00 UTC)以来的秒数”,即日期:“ U”,则输出将为None。

答案 2 :(得分:0)

{% if date_created|date:"YmdHis" < now|date:"YmdHis" %}

{% endif %}