2017-02-21 23 views
0

Мне нужно знать, как получить время, прошедшее между edit_date (столбец из одной из моих моделей) и datetime.now(). Столбец edit_date находится в формате DateTimeField. (Я использую Python 2.7 и Django 1.10)Разница между двумя датами python/Django

Это функция, что я пытаюсь сделать:

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 

Единственное, я получаю от этого Fuction являются минут прошло и секунд. Что мне нужно, чтобы получить эту дату в следующем формате:

Time_elapsed = 3d 47m 23s

Любые идеи? дайте мне знать, если я не ясно, от того, если вам нужна дополнительная информация

Спасибо за ваше внимание,

+1

как насчет [это] (https://github.com/dateutil/dateutil)? – Soorena

ответ

1

Взгляните на 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) 

Я сделал этот код из памяти, поэтому вы возможно, придется настроить его на ваши нужды.

+0

Это работало, мне нужно было что-то изменить :), Спасибо! – Deluq

1

Попробуйте что-то вроде

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

как насчет часов? – Deluq

+0

О, я не включил часы, потому что вы не включили их в свой пример Time_elapsed. Вы получите часы как 'hours = c.seconds // 3600'. – user6731765

Смежные вопросы