Python - Timedelta 表达式忽略天数(将6分钟视为24小时加6分钟)

2 投票
2 回答
864 浏览
提问于 2025-04-16 19:42

我正在尝试计算一个帖子上线以来经过了多少小时。这个计算是可以的,但有一个问题,就是它把24小时后当作0小时。换句话说,它似乎只是简单地把当前时间减去基准时间,而没有考虑到日期的差异。

    def hours_live(self):
         diff=((datetime.datetime.today() - self.created).seconds)/3600
         return '%d Hours Ago' %diff

self.created 是一个Django中的日期时间字段:

      created=models.DateTimeField(auto_now_add=True)

我在这个日期时间对象上漏掉了什么呢?

2 个回答

3

别忘了你还可以用Django的timesince过滤器哦,这也是一个选择 :)

>>> import datetime
>>> past = datetime.datetime.now() - datetime.timedelta(hours=6, minutes=20)
>>>
>>> from django.template.defaultfilters import timesince
>>> timesince(past)
u'6 hours, 20 minutes'
6

你需要的是 total_seconds(),而不是 seconds

撰写回答