自定義時間過濾器

2021-08-25 08:21:20 字數 1140 閱讀 3208

###實現步驟

#第一步,引導入  datetime

#第二步,引入乙個建立時間,或者 直接寫死乙個時間

#第三步,註冊乙個時間過濾器

#第四步,實現過濾器的**

#第五步,在模板中呼叫

示例**:

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

二、過濾器**

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

三、模板中的**

測試時間過濾器是否管用     }

自定義過濾器

這裡的過濾器的作用主要是在業務邏輯裡面判斷,傳遞的引數是否有誤,然後在實現類裡面去判斷具體的業務資料,執行流程和servlet的過濾器相類似,但是執行時機和作用大不相同,servlet的執行時機是在請求資源,在達到control之前去執行,通過執行鏈,我們的這個過濾器是在control裡,如下.先定...

自定義過濾器和全域性過濾器

過濾器中必須有返回值 一般使用花括號 插值,管道符前是要過濾的元素,管道符之後是過濾方法 p 過濾方法中有乙個引數,這個引數就是傳進來的要過濾的元素 過濾器 filters 使用過濾器時出現死迴圈 因為在將原陣列排序後賦值給原陣列,引用空間沒有變化,過濾一直在執行 解決辦法 使用擴充套件符將陣列賦值...

自定義Symfony filter 過濾器)

symfony自動生成的filter有一些侷限性,比如不能過濾關聯表的特定字段,過濾的表單只有input和select兩種,下面介紹處理上面兩個問題的解決方案。1.關聯表字段查詢 假設我們有order和user兩張表,order中有user id和user關聯,syfmony預設可以通過user i...