Разница между метками времени в Стрелке

Как мне заставить Arrow возвращать разницу в часах между двумя временными метками?

Вот что у меня есть:

difference = arrow.now() - arrow.get(p.create_time())
print(difference.hour)

p.create_time() будучи меткой времени создания текущего запущенного процесса.

Возвращает:

AttributeError: 'datetime.timedelta' object has no attribute 'hour'

Изменить: я не хочу общее время во всех трех форматах, я хочу его как остаток, например. "3 дня, 4 часа, 36 минут", а не "3 дня, 72 часа, 4596 минут"

1 ответ

Дано 2 даты, которые отформатированы из строки в arrow тип.

>>> date_1 = arrow.get('2015-12-23 18:40:48','YYYY-MM-DD HH:mm:ss')
>>> date_2 = arrow.get('2017-11-15 13:18:20','YYYY-MM-DD HH:mm:ss')
>>> diff = date_2 - date_1

Разница в datetime.timedelta тип данных.

>>> print type(diff)
<type 'datetime.timedelta'>

И результаты в:

>>> print diff
692 days, 18:37:32

Чтобы отформатировать его так, чтобы у вас было D days, H hours, M minutes, S seconds вы получите дни отдельно, а затем с помощью divmod Функция получения другой информации.

>>> days = diff.days # Get Day 
>>> hours,remainder = divmod(diff.seconds,3600) # Get Hour 
>>> minutes,seconds = divmod(remainder,60) # Get Minute & Second 

Результат будет:

>>> print days, " Days, ", hours, " Hours, ", minutes, " Minutes, ", seconds, " Second"
692  Days,  18  Hours,  37  Minutes,  32  Second
Другие вопросы по тегам