如何计算Django模板中的时差

时间:2014-02-14 08:30:38

标签: django django-templates django-filter

我有一个带有两个TimeFields的模型。我想在模板中显示时差(即27分钟)。我看到了过滤器的时间,但它不起作用;我认为它只接受日期时间,但我的模型只存储了时间。

对@HAL的回应:

'datetime.time' object has no attribute 'year'
Exception Location: C:\Python27\lib\site-packages\django\utils\timesince.py in timesince, line 32

2 个答案:

答案 0 :(得分:14)

您可以使用timesince模板标记。

答案 1 :(得分:3)

如果您知道相应的日期和时区,则只能比较两个时间戳。datetime.time类仅包含时间。我强烈建议您在这种情况下考虑使用DateTimeField(使用datetime.datetime)。

如果您确定两个datetime.time个对象具有相同的日期和时区,那么您可以像这样向模型添加方法:

import datetime
from django.utils.timesince import timesince

class MyModel(models.Model):
...

    def get_time_diff(self):
        dummydate = datetime.date(2000,1,1)  # Needed to convert time to a datetime object
        dt1 = datetime.combine(dummydate,self.t1)
        dt2 = datetime.combine(dummydate,self.t2)
        return timesince(dt1, dt2)   # Assuming dt2 is the more recent time

此处使用任意日期将时间值升级为日期时间值。您可以从模板中调用{{ obj.get_time_diff }}