Skip to content

Instantly share code, notes, and snippets.

@yashrathi-git
Last active September 8, 2021 05:25
Show Gist options
  • Save yashrathi-git/c2dfe173aad38451f2d326dcf4331650 to your computer and use it in GitHub Desktop.
Save yashrathi-git/c2dfe173aad38451f2d326dcf4331650 to your computer and use it in GitHub Desktop.
Pretty print a time delta in Python in weeks, days, hours, minutes and seconds
def pprint_timedelta(delta: timedelta):
duration_units = (
('week', 60 * 60 * 24 * 7),
('day', 60 * 60 * 24),
('hour', 60 * 60),
('min', 60),
('second', 1)
)
seconds = int(delta.total_seconds())
parts = []
for unit, div in duration_units:
amount, seconds = divmod(int(seconds), div)
if amount > 0:
parts.append('{} {}{}'.format(amount, unit, "" if amount == 1 else "s"))
return ', '.join(parts)

Pretty print a time delta in Python in weeks, days, hours, minutes and seconds

Example:

>>> pprint_timedelta(timedelta(weeks=1, hours=2, minutes=4, seconds=4))
'1 week, 2 hours, 4 mins, 4 seconds'
>>> pprint_timedelta(timedelta(days=4, minutes=10, hours=12, seconds=14))
'4 days, 12 hours, 10 mins, 14 seconds'
>>> pprint_timedelta(timedelta(minutes=10, seconds=14))
'10 mins, 14 seconds'
>>> pprint_timedelta(timedelta(minutes=1))
'1 min'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment