Skip to content

Instantly share code, notes, and snippets.

@dhrrgn
Last active April 6, 2022 19:51
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dhrrgn/7255361 to your computer and use it in GitHub Desktop.
Save dhrrgn/7255361 to your computer and use it in GitHub Desktop.
Python timedelta object formatting for humans.
def human_delta(tdelta):
"""
Takes a timedelta object and formats it for humans.
Usage:
# 149 day(s) 8 hr(s) 36 min 19 sec
print human_delta(datetime(2014, 3, 30) - datetime.now())
Example Results:
23 sec
12 min 45 sec
1 hr(s) 11 min 2 sec
3 day(s) 13 hr(s) 56 min 34 sec
:param tdelta: The timedelta object.
:return: The human formatted timedelta
"""
d = dict(days=tdelta.days)
d['hrs'], rem = divmod(tdelta.seconds, 3600)
d['min'], d['sec'] = divmod(rem, 60)
if d['min'] is 0:
fmt = '{sec} sec'
elif d['hrs'] is 0:
fmt = '{min} min {sec} sec'
elif d['days'] is 0:
fmt = '{hrs} hr(s) {min} min {sec} sec'
else:
fmt = '{days} day(s) {hrs} hr(s) {min} min {sec} sec'
return fmt.format(**d)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment