Deluq
Deluq

Reputation: 211

Difference between two dates python/Django

I need to know how to get the time elapsed between the edit_date(a column from one of my models) and datetime.now(). My edit_date column is under the DateTimeField format. (I'm using Python 2.7 and Django 1.10)

This is the function I'm trying to do:

def time_in_status(request):
    for item in Reporteots.objects.exclude(edit_date__exact=None):
        date_format = "%Y-%m-%d %H:%M:%S"
        a = datetime.now()
        b = item.edit_date
        c = a - b
        dif = divmod(c.days * 86400 + c.minute, 60)
        days = str(dif)

    print days

The only thing I'm getting from this fuction are the minutes elapsed and seconds. What I need is to get this date in the following format:

Time_elapsed = 3d 47m 23s

Any ideas? let me know if I'm not clear of if you need more information

Thanks for your attention,

Upvotes: 1

Views: 2725

Answers (2)

themanatuf
themanatuf

Reputation: 3130

Take a look at dateutil.relativedelta:

http://dateutil.readthedocs.io/en/stable/relativedelta.html

from dateutil.relativedelta import relativedelta
from datetime import datetime
now = datetime.now()
ago = datetime(2017, 2, 11, 13, 5, 22)
diff = relativedelta(ago, now)
print "%dd %dm %ds" % (diff.days, diff.minutes, diff.seconds)

I did that code from memory, so you may have to tweak it to your needs.

Upvotes: 3

NS0
NS0

Reputation: 6096

Try something like

c = a - b
minutes = (c.seconds % 3600) // 60
seconds = c.seconds % 60
print "%sd %sm %ss" % (c.days, minutes, seconds)

Upvotes: 1

Related Questions