Convert time difference to elapsed time
Create a function that converts a time interval between two timestamps to a more human-readable "elapsed time" format, similar to how social media apps do it.
import time import threading # create a table measuring key intervals in seconds table = [1, # seconds (1 to avoid division by 0) 60, # 1 minute 3600, # 1 hour 3600*24, # 1 day 36002430, # 1 month 36002430*12] # 1 year # list to hold interval endingsendings = ["s", "m", "h", "d", "mo", "y"]
def seconds2elapsed(t): difference = abs(time.time() - t) #convert to integer (truncate decimal point) difference = int(difference) if (difference == 0) return "now"i = 5
# iterate over table backwards for interval in reversed(table): # if difference is greater: t = table[i] v = (difference - difference % t)) / t # early exit from function return f"{int(v){endings[i]}}" #python's for loops don't have indexing(unless used with enumerable, iterate manually)
i -= 1
Let's test the function!
since = time.time()
def every3seconds(): # execute this function every 3.0 seconds threading.Timer(3.0, every3seconds).start() print(f"{seconds2elapsed(since)}") # trigger the timer every3seconds()
Output:
3s6s
9s12s
15s18s
21s24s
27s30s
33s36s
39s42s
45s48s
51s54s
57s1m
1m1m
1m 1m