from datetime import datetime, date def get_relative_date(past_date, reference_date=None): """ Return relative date as string. """ if not past_date: return "Never" if not reference_date: reference_date = datetime.now() # Check parameters if past_date > reference_date: return "get_relative_date() past_date is after relative_date" weeks, days = divmod((reference_date - past_date).days, 7) if weeks == days == 0: # Played today, so return time instead return past_date.strftime("%H:%M") return f"{weeks} weeks, {days} days ago" def ms_to_mmss(ms, decimals=0, negative=False): if not ms: return "-" sign = "" if ms < 0: if negative: sign = "-" else: ms = 0 minutes, remainder = divmod(ms, 60 * 1000) seconds = remainder / 1000 # if seconds >= 59.5, it will be represented as 60, which looks odd. # So, fake it under those circumstances if seconds >= 59.5: seconds = 59.0 return f"{sign}{minutes:.0f}:{seconds:02.{decimals}f}"