38.Python自定义计算时间过滤器

在写自定义的过滤器时,因为django.template.Library.filter()本身可以作为一个装饰器,所以可以使用:
register = django.template.Library()

@register.filter   代替  register.filter("过滤器名","函数名")

如果使用@register.filter进行注册自定义的过滤器,并且没有传递任何参数,那么默认的过滤器名和函数名是相同的,当然,也可以进行修改,只需要在@register.filter("过滤器名"),此时的过滤器名就更改了,就可在DTL模板中使用自定义的过滤器了。

定义时间计算过滤器在显示的时候,时间的显示规则:time距离现在多长时间间隔
  1. 如果时间间隔小于1分钟,那么就像是“刚刚”
  2. 如果时间间隔大于1分钟小于1小时,那么就显示“xx分钟前”
  3. 如果是大于1小时小于24小时,那么就显示“xx小时前”
  4. 如果是大于24小时,小于30天,那么就显示“xx天前”’
  5. 否则就是显示具体时间
    示例代码如下:
    自定义过滤器的文件my_fliter.py
@register.filter()
def time_since(value):
    # 首先对传进来的时间进行判断,如果是datetime类型的就可以与当前的时间进行比较,
    # 如果不是datetime类型的,就直接返回value
    if not isinstance(value,datetime):
        return value
    # 如果可以到达这里,就代表为datetime类型的,
    # timedelay.total_seconds()属性
    now = datetime.now()
    timestamp = (now - value).total_seconds()
    if timestamp < 60:
        return "刚刚"
    elif timestamp >= 60 and timestamp < 60*60:
        # 在python3中如果两数相除,有余数的话,就会保持小数,这个时候我们就可以使用int()函数,进行转换
        minutes = int(timestamp/60)
        return "%s分钟前" % minutes
    elif timestamp >= 60*60 and timestamp < 60*60*24:
        hours = int(timestamp/60/60)
        return "%s小时前" % hours
    elif timestamp >= 60*60*24 and timestamp < 60*60*24*30:
        days = int(timestamp/60/60/24)
        return "%s天前" % days
    else:
        return value.strftime("%Y/%m/%d %H:%M")
views.py中定义视图函数,并且构造一个时间:
from django.shortcuts import render
from datetime import datetime

def index(request):
    context = {
        'time': datetime(year=2019,month=1,day=16,hour=23,minute=44,second=0)
    }
    return render(request,'index.html',context=context)
index.html中进行调用:
{#  如果想要使用自定义的过滤器的话,就必须要先导入 ,导入的名称为自定义过滤器所处的文件名 #}
{#  必须要把app安装到settings.py文件中  #}
{% load my_fliter %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {{ time|time_since }}
</body>
</html>
浏览器中查看结果:

原文地址:https://www.cnblogs.com/guyan-2020/p/12204819.html

时间: 2024-10-19 14:18:03

38.Python自定义计算时间过滤器的相关文章

Python 日期和时间(转)

Python 日期和时间 Python程序能用很多方式处理日期和时间.转换日期格式是一个常见的例行琐事.Python有一个 time 和 calendar 模组可以帮忙. 什么是Tick? 时间间隔是以秒为单位的浮点小数. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示. Python附带的受欢迎的time模块下有很多函数可以转换常见日期格式.如函数time.time()用ticks计时单位返回从12:00am, January 1, 1970(epoch) 开始的记录的当

java为啥计算时间从1970年1月1日开始

http://www.myexception.cn/program/1494616.html ---------------------------------------------------------- java为什么计算时间从1970年1月1日开始 今天在看Python  API 时,看到 time 模块 : The epoch is the point where the time starts. On January 1st of that year, at 0 hours,the

Python科学计算(二)windows下开发环境搭建(当用pip安装出现Unable to find vcvarsall.bat)

用于科学计算Python语言真的是amazing! 方法一:直接安装集成好的软件 刚开始使用numpy.scipy这些模块的时候,图个方便直接使用了一个叫做Enthought的软件.Enthought是一家位于美国得克萨斯州首府奥斯汀的软件公司,主要使用Python从事科学计算工具的开发.Enthought里面包含了很多库,不需要你自己安装就可以直接使用了. 其实还又很多Python科学计算的集成软件,比如Python(x, y)和WinPython,个人感觉WinPython还是不错的,里面包

Python 开发者节省时间的 10 个小技巧

Python 是一个美丽的语言,可以激发用户对它的爱.所以如果你试图加入程序员行列,或者你有点厌倦C++,Perl,Java 和其他语言,我推荐你尝试Python. Python有很多吸引程序员的功能 ,它易学,面向对象,字节码编译,免费且开源.还有运行时检查.完整快速的支持,可以执行各种任务的扩展. 高效的Python 在这篇文章,我想强调一些 Python 可以节约时间并最大限度地提高生产力的方面.在做准备时,我咨询了几个 Pythonists,他们最节省时间的技巧是什么?答案在这里… 1.

Python 日期和时间day12

Python程序能用很多方式处理日期和时间.转换日期格式是一个常见的例行琐事.Python有一个time and calendar模组可以帮忙. 什么是Tick? 时间间隔是以秒为单位的浮点小数. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示. Python附带的受欢迎的time模块下有很多函数可以转换常见日期格式.如函数time.time()用ticks计时单位返回从12:00am, January 1, 1970(epoch) 开始的记录的当前操作系统时间, 如下实例

python 实现计算数独

输入文件格式: 008309100900060004007504800036000540001000600042000970005907300600010008004608200 输出结果: yuan********************0 0 8 3 0 9 1 0 0 9 0 0 0 6 0 0 0 4 0 0 7 5 0 4 8 0 0 0 3 6 0 0 0 5 4 0 0 0 1 0 0 0 6 0 0 0 4 2 0 0 0 9 7 0 0 0 5 9 0 7 3 0 0 6 0

自学php找工作【二】 PHP计算时间加一天

最近几天在做一个项目,主要是将SQLserver数据到MySQL数据库,一个url跑一次 同步一次昨天的数据,由于很多数据需要同步,所以做了一个操作界面的,一个单纯跑url的 在其中涉及到了对于时间的计算!当我写完这个程序的时候,我回头看我写的计算时间的代码.有些都有点儿懵了!...在这里记录下来方便以后回忆,也方便别人使用! 代码可能会臃肿!新人一枚!欢迎指正!拒绝骂街哦! 先简单说一下代码,其中主要涉及到计算润年 平年,计算28天 31天 30天月份 等,主要就是判断!代码中有注释,大家看一

Python 日期和时间 —— datetime

Python 日期和时间 —— datetime Python提供了多个内置模块用于操作日期时间,如calendar,time,datetime.time提供的接口与C标准库time.h基本一致.其中应用最广的是datetime,相比于time模块,datetime模块的接口则更直观.更容易调用. datetime 模块为日期和时间处理同时提供了简单和复杂的方法.支持日期和时间算法的同时,实现的重点在于更有效的处理和格式化输出.该模块还支持时区处理.本文对 datetime库进行学习. date

Python中对时间日期的处理方法简单汇总

这篇文章主要介绍了Python实用日期时间处理方法汇总,本文讲解了获取当前datetime.获取当天date.获取明天/前N天.获取当天开始和结束时间(00:00:00 23:59:59).获取两个datetime的时间差.获取本周/本月/上月最后一天等实用方法 ,需要的朋友可以参考下 原地址:http://www.cnblogs.com/wenBlog/p/6097220.html 原则, 以datetime为中心, 起点或中转, 转化为目标对象, 涵盖了大多数业务场景中需要的日期转换处理 步