You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.3 KiB
45 lines
1.3 KiB
7 years ago
|
import datetime
|
||
|
|
||
|
def pretty_date(time=False):
|
||
|
"""
|
||
|
Get a datetime object or a int() Epoch timestamp and return a
|
||
|
pretty string like 'an hour ago', 'Yesterday', '3 months ago',
|
||
|
'just now', etc
|
||
|
"""
|
||
|
from datetime import datetime
|
||
|
now = datetime.now()
|
||
|
if type(time) is int:
|
||
|
diff = now - datetime.fromtimestamp(time)
|
||
|
elif isinstance(time,datetime):
|
||
|
diff = now - time
|
||
|
elif not time:
|
||
|
diff = now - now
|
||
|
second_diff = diff.seconds
|
||
|
day_diff = diff.days
|
||
|
|
||
|
if day_diff < 0:
|
||
|
return ''
|
||
|
|
||
|
if day_diff == 0:
|
||
|
if second_diff < 10:
|
||
|
return "just now"
|
||
|
if second_diff < 60:
|
||
|
return str(second_diff) + " seconds ago"
|
||
|
if second_diff < 120:
|
||
|
return "a minute ago"
|
||
|
if second_diff < 3600:
|
||
|
return str(second_diff / 60) + " minutes ago"
|
||
|
if second_diff < 7200:
|
||
|
return "an hour ago"
|
||
|
if second_diff < 86400:
|
||
|
return str(second_diff / 3600) + " hours ago"
|
||
|
if day_diff == 1:
|
||
|
return "Yesterday"
|
||
|
if day_diff < 7:
|
||
|
return str(day_diff) + " days ago"
|
||
|
if day_diff < 31:
|
||
|
return str(day_diff / 7) + " weeks ago"
|
||
|
if day_diff < 365:
|
||
|
return str(day_diff / 30) + " months ago"
|
||
|
return str(day_diff / 365) + " years ago"
|