chelovekmuravei
@chelovekmuravei
\(-_-)/ раз два три четыре

Как сделать datetime.timedelta в нужном формате?

from datetime import datetime, timedelta
import pprint

data1 = '2012-10-23 11:00:00'
data2 = '2012-10-20 10:00:00'
    
data1 = datetime.strptime(data1, '%Y-%m-%d %H:%M:%S')
data2 = datetime.strptime(data2 , '%Y-%m-%d %H:%M:%S')

x = data1 - data2
    
print(x)
pprint.pprint(x)

# 3 days, 1:00:00
# datetime.timedelta(days=3, seconds=3600)


В конечном итоге я получаю сумму всех этих значений, например 611 days, 0:10:00. Как мне вывести через print %Y Лет %H Часов %M Минут и %S секунд, и как проверить, есть ли один из параметров, чтобы не выводить пустое значение, а зразу что есть, например %M Минут и %S секунд?
  • Вопрос задан
  • 244 просмотра
Решения вопроса 1
ri_gilfanov
@ri_gilfanov
Web- and desktop-developer
Одним выражением:
result = ' '.join([
    pattern.format(value) for value, pattern in zip(
        (x.days, x.seconds//3600, (x.seconds//60)%60, x.seconds),
        ('{} д.', '{} час.', '{} мин.', '{} сек.'),
    )
    if value
])


Падежи русского и других флективных языков (например, 1 час, но 2 часа и 8 часов) -- отдельный вопрос. Проще всего использовать сокращения: д., час., мин. и сек.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы