找出两个Django日期之间的区别

时间:2015-04-15 06:47:51

标签: django datetime templatetag

我有一个模板标签,如下所示,

     @register.filter
def get_runtime(date_start=None, date_end=None):
    fmt = '%Y-%m-%dT%H:%M:%S'
    if date_start and date_end is not None:
        date_start = datetime.strptime(date_start, fmt)
        date_end = datetime.strptime(date_end, fmt)
        return date_end - date_start
    else:
        return None

我将其传递到我的网站之一,如下所示,

<b>Run Time (min): </b> {{ value.date_start|get_runtime:value.date_end }}<br>

但它显示错误“strptime()只需要2个参数(给定1个)” 请帮帮我。提前致谢

1 个答案:

答案 0 :(得分:0)

如果value是模型且date_startdate_end是DateTimeFields,则可以更轻松地为模型添加方法

def runtime(self):
    if self.date_start and self.date_end:
        return self.date_end - self.date_start

并在模板中使用它:

{{ value.runtime }}

对于您的解决方案,最好使用标记而不是过滤器,因为您不会修改值并计算其他内容。函数默认返回None。所以它看起来像:

@register.simple_tag
def get_runtime(date_start, date_end):
    if date_start and date_end:
        return date_end - date_start
模板中的

{% get_runtime value.date_start value.date_end %}