1.创建apps/news/templatetags/datetime_filter.py文件
import pytz
from django import template
from datetime import datetime
register = template.Library()
# 时间过滤器
@register.filter()
def time_filter(data):
if isinstance(data, datetime):
now = datetime.now() # 不含时区
# print('最新:{}'.format(now))
now = now.replace(tzinfo=pytz.timezone('UTC'))
# print('数据库时间:{}'.format(data))
timestamp = (now-data).total_seconds()
# print('时间差:{}'.format(timestamp))
if timestamp < 60:
return '刚刚'
elif timestamp>=60 and timestamp<60*60:
m = int(timestamp//60)
return '{}分钟前'.format(m)
elif timestamp>=60*60 and timestamp<60*60*24:
h = int(timestamp//(60*60))
return '{}小时前'.format(h)
elif timestamp>=60*60*24 and timestamp<60*60*24*30:
d = int(timestamp//(60*60*24))
return '{}天前'.format(d)
elif timestamp>=60*60*24*30 and timestamp<60*60*24*7*52:
month = int(timestamp//(60*60*24*30))
return '{}月前'.format(month)
elif timestamp>=60*60*24*7*52 and timestamp<60*60*24*7*52*2:
y = int(timestamp//(60*60*24*7*52))
return '{}年前'.format(y)
elif timestamp>60*60*24*7*52*2:
return '凉了'
else:
return data.strftime('%Y年%m月%d日 %H:%M')
else:
return data
2.在html模板里面
{% load dataetime_filter %}
{{ update_time|time_filter }}