2016-12-12 20 views
0

我有Django應用程序,並設置正確的條件下問題的日期:如果時間越來越少後來有一天在Django應用程序

  1. 我要檢查,如果事件之前的超過24小時(1天) - 顯示天
  2. 我要檢查,如果它是事件發生前不到24小時(1天) - 顯示小時和分鐘
  3. 檢查事件是date_from之間DATE_TO

這裏是我的過濾器:

任務1

@register.filter(name='if_more_then_24') 
def if_more_then_24(time): 
    return time + datetime.timedelta(hours=24) > timezone.now() 

任務2

@register.filter(name='if_less_then_24') 
def if_less_then_24(time): 
    return time + datetime.timedelta(hours=24) < timezone.now() 

任務3

@register.filter(name='now_online') 
def now_online(time): 
    return time < timezone.now() 


@register.filter(name='not_online') 
def not_online(time): 
    return time > timezone.now() 

但是代碼沒有工作,因爲當我有 {{object.event_from}}十二月2016年11月11日下午5:00 ,今天是2016年12月12日,下午4:31。 計數器顯示時1:28而不是幾天

+3

你必須比「不工作」更具體,你是否收到錯誤信息? – Will

+0

@請檢查我的更新 –

回答

2

我認爲你可能有落後你的邏輯:

def if_more_then_24(time): 
    return time + datetime.timedelta(hours=24) > timezone.now() 

如果給定time(比如在昨天某個時候)+ 24小時比更大現在,這意味着它不到24小時前(因爲將來會增加24小時的結果)。

def if_less_then_24(time): 
    return time + datetime.timedelta(hours=24) < timezone.now() 

如果給定time + 24小時不到,現在,它意味着time超過24小時之前,因爲加一個日子仍然是在過去。

所以,無論你打電話你的功能將期待相反的結果。在這些功能中切換<>,它應該改正這一點。

See here有關減去一天的更多信息。