我在比较Django模板中的两个日期时遇到了问题.
我的模型中有一个日期字段:
date_created = models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)
我想比较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)
Run Code Online (Sandbox Code Playgroud)
现在我正在计算今天的视图:
today = datetime.now().strftime("%B %d, %Y,%I:%M %P")
Run Code Online (Sandbox Code Playgroud)
不幸的是我无法比较日期.
请告诉我,我在这里做错了什么.
today = datetime.now()
{% if x.for_meeting.date_created.date < today.date and x.for_meeting.date_created.time < today.time %}
Run Code Online (Sandbox Code Playgroud)
您不必创建 today 变量(在视图中),只需使用已经可用的 {% now %} 模板标记。
并且,在比较 Django 模板中的 DateTimeField 对象时,请确保在相同的时区中比较它们。为了清晰起见并与时区更改兼容,您可能希望明确说明这一点:
{% load tz %}
{% if date_created|utc < now|utc %}
Run Code Online (Sandbox Code Playgroud)
如果 dead_deadline 为 None 或 => 比当前日期时间,则计算结果为 False。
默认情况下(对我而言),date_created 在数据库时间 (UTC) 中,现在在 settings.py 中设置的本地时间。
还要确保您比较的值具有有意义的值。
附注。如果您尝试使用 localtime 过滤器将格式为“自 Unix 纪元(1970 年 1 月 1 日 00:00:00 UTC)以来的秒数”的日期时间对象转换为日期:“U”,则输出将为 None。
{% if date_created|date:"YmdHis" < now|date:"YmdHis" %}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10236 次 |
| 最近记录: |