79 lines
2.7 KiB
Python
79 lines
2.7 KiB
Python
from dateutil import parser
|
|
from datetime import datetime
|
|
|
|
|
|
def create_moment(dt):
|
|
# get current time, database object time, get the difference in minutes
|
|
now_datetime = datetime.now()
|
|
item_datetime = parser.parse(dt)
|
|
obj_time = item_datetime.strftime("%-I:%M")
|
|
obj_day = item_datetime.strftime("%x")
|
|
minutes_diff = (now_datetime - item_datetime).total_seconds() / 60.0
|
|
|
|
if minutes_diff > 0:
|
|
# if the time difference is less than 5 minutes
|
|
if minutes_diff < 5.0:
|
|
moment = "Just now"
|
|
|
|
# if the time difference is less than 1 hour
|
|
elif minutes_diff < 60.0:
|
|
minutes_diff = round(minutes_diff)
|
|
moment = f"{minutes_diff} minutes ago"
|
|
|
|
# if the time difference is less than 1 day
|
|
elif minutes_diff < 1440.0:
|
|
minutes_diff = round(minutes_diff / 60.0)
|
|
if minutes_diff == 1:
|
|
hour = "hour"
|
|
else:
|
|
hour = "hours"
|
|
moment = f"{minutes_diff} {hour} ago"
|
|
|
|
# if the time difference is less than 1 week
|
|
elif minutes_diff < 10080.0:
|
|
day = item_datetime.strftime("%a")
|
|
moment = f"{day} at {obj_time}"
|
|
|
|
# if the time difference is less than 1 year
|
|
elif minutes_diff < 525600.0:
|
|
day = item_datetime.strftime("%-m/%-d")
|
|
moment = f"{day} at {obj_time}"
|
|
|
|
# if the time difference is more than 1 year
|
|
else:
|
|
moment = f"{obj_day} at {obj_time}"
|
|
else:
|
|
# if the time difference is less than 5 minutes in the future
|
|
if minutes_diff > -5.0:
|
|
moment = "Now"
|
|
|
|
# if the time difference is less than 1 hour
|
|
elif minutes_diff > -60.0:
|
|
minutes_diff = round(abs(minutes_diff))
|
|
moment = f"in {abs(minutes_diff)} minutes"
|
|
|
|
# if the time difference is less than 1 day in the future
|
|
elif minutes_diff > -1440.0:
|
|
minutes_diff = round(abs(minutes_diff) / 60.0)
|
|
if minutes_diff == 1:
|
|
hour = "hour"
|
|
else:
|
|
hour = "hours"
|
|
moment = f"in {abs(minutes_diff)} {hour}"
|
|
|
|
# if the time difference is less than 1 week in the future
|
|
elif minutes_diff > -10080.0:
|
|
day = item_datetime.strftime("%a")
|
|
moment = f"{day} at {obj_time}"
|
|
|
|
# if the time difference is less than 1 year in the future
|
|
elif minutes_diff > -525600.0:
|
|
day = item_datetime.strftime("%-m/%-d")
|
|
moment = f"{day} at {obj_time}"
|
|
|
|
# if the time difference is more than 1 year in the future
|
|
else:
|
|
moment = f"{obj_day} at {obj_time}"
|
|
|
|
return moment
|