# modified from http://stackoverflow.com/a/26781642/1492614 def humanize_time(amount, units='seconds'): def process_time(amount, units): INTERVALS = [ 1, 60, 60 * 60, 60 * 60 * 24, 60 * 60 * 24 * 7, 60 * 60 * 24 * 7 * 4, 60 * 60 * 24 * 7 * 4 * 12, 60 * 60 * 24 * 7 * 4 * 12 * 100, 60 * 60 * 24 * 7 * 4 * 12 * 100 * 10 ] NAMES = [ ('second', 'seconds'), ('minute', 'minutes'), ('hour', 'hours'), ('day', 'days'), ('week', 'weeks'), ('month', 'months'), ('year', 'years'), ('century', 'centuries'), ('millennium', 'millennia') ] result = [] unit = list(map(lambda a: a[1], NAMES)).index(units) # Convert to seconds amount = amount * INTERVALS[unit] for i in range(len(NAMES) - 1, -1, -1): a = amount // INTERVALS[i] if a > 0: result.append((a, NAMES[i][1 % a])) amount -= a * INTERVALS[i] return result rd = process_time(int(amount), units) cont = 0 for u in rd: if u[0] > 0: cont += 1 buf = '' i = 0 for u in rd: if u[0] > 0: buf += f"{u[0]}{u[1][0]}" cont -= 1 i += 1 return buf