自定义时间过滤器

###实现步骤

#第一步,引导入  datetime

#第二步,引入一个创建时间,或者 直接写死一个时间

#第三步,注册一个时间过滤器

#第四步,实现过滤器的代码

#第五步,在模板中调用

示例代码:

一、字典中的代码      'create_time': datetime(2017,10,20,16,19,0)

二、过滤器代码

@app.template_filter('handle_time')#注册一个过滤器
def handel_time(time):
    """
      time距离现在的时间间隔
      1. 如果时间间隔小于5分钟以内,那么就显示“刚刚”
      2. 如果是大于5分钟小于1小时,那么就显示“xx分钟前”
      3. 如果是大于1小时小于24小时,那么就显示“xx小时前”
      4. 如果是大于24小时小于30天以内,那么就显示“xx天前”
      5. 否则就是显示具体的时间 2017/10/20 16:15
      """
    if isinstance(time,datetime):#两个if else,外层的先判断数据格式是否是datetime
        now = datetime.now()  # h获取当前的时间
        timestampe = (now - time).total_seconds()  # 取得两个时间差,并且转为秒
        if timestampe < 60 * 5:
            return "刚刚"
        elif timestampe >= 60 * 5 and timestampe < 60 * 60:
            minutes = timestampe / 60
            return "%s分钟之前" % int(minutes)
        elif timestampe >= 60 * 60 and timestampe < 60 * 60 * 24:
            minutes = timestampe / 60
            hours = minutes / 60
            return "%s小时之前" % int(hours)
        else:
            return time.strftime('%Y/%m/%d %H:%M')

    else:
        return time

三、模板中的代码

<p>测试时间过滤器是否管用     {{create_time|handle_time}}</p>

猜你喜欢

转载自blog.csdn.net/hebi123s/article/details/81905475