1
|
import datetime
|
2
|
|
3
|
from django.utils.translation import pgettext
|
4
|
from django.utils.timezone import localtime, get_default_timezone
|
5
|
from django.template.defaultfilters import date
|
6
|
|
7
|
def datetime2human(dt, include_time=False, days_limit=7):
|
8
|
'''Format a datetime object for human consumption'''
|
9
|
if isinstance(dt, datetime.datetime):
|
10
|
time = dt.strftime('%H:%M')
|
11
|
else:
|
12
|
dt = datetime.datetime(year=dt.year, month=dt.month, day=dt.day,
|
13
|
tzinfo=get_default_timezone())
|
14
|
include_time = False
|
15
|
dt = localtime(dt)
|
16
|
today = datetime.date.today()
|
17
|
yesterday = today - datetime.timedelta(days=1)
|
18
|
subdate = dt.date()
|
19
|
if subdate == today:
|
20
|
if include_time:
|
21
|
return pgettext('humantime', 'today at {0}').format(time)
|
22
|
else:
|
23
|
return pgettext('humantime', 'today')
|
24
|
elif subdate == yesterday:
|
25
|
if include_time:
|
26
|
return pgettext('humantime', 'yesterday at {0}').format(time)
|
27
|
else:
|
28
|
return pgettext('humantime', 'yesterday')
|
29
|
else:
|
30
|
if include_time:
|
31
|
return date(dt, 'SHORT_DATETIME_FORMAT')
|
32
|
else:
|
33
|
return date(dt, 'SHORT_DATE_FORMAT')
|