Last active
April 6, 2022 19:51
-
-
Save dhrrgn/7255361 to your computer and use it in GitHub Desktop.
Python timedelta object formatting for humans.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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