Django日期时间表达式

时间:2013-07-22 01:48:26

标签: python django datetime

您好我正在使用django并通过

收集日期时间
start_date = models.DateTimeField('start date', blank=True)
end_date = models.DateTimeField('end date', blank=True)

我有报告开始日期和报告结束日期。

我希望通过

检索报告所用的时间

获取end_date并减去结束日期并将其四舍五入到最近的一天

def report_days(self):
    return self.end_date - self.start_date

目前python shell返回此

>>> a.report_days()
datetime.timedelta(2, 65020, 613435)

1 个答案:

答案 0 :(得分:1)

Django将DateTimeFields表示为Python datetime对象,因此减法的结果是datetime.timedelta对象。要获得完整天数,您可以执行以下操作:

delta = self.end_date - self.pub_date
return delta.days

但这只算整天。要舍入到最近的一整天,您可以执行以下操作:

delta = self.end_date - self.pub_date
if delta.seconds / 3600 >= 12:
    return delta.days + 1 # round up
else:
    return delta.days # round down

有关详细信息,请参阅:http://docs.python.org/2/library/datetime.html#timedelta-objects