2016-12-12 1 views
0

ich django app und Probleme mit gesetztem richtigen Bedingungen für Termine haben:Wenn die Zeit mehr und weniger als einen Tag in django app

  1. ich überprüfen möchten, ob es vor dem Ereignis mehr als 24 Stunden (1 Tag) ist - zeige Tage
  2. ich möchte überprüfen, ob es weniger als 24 Stunden (1 Tag) vor dem Ereignis - Show Stunden und Minuten
  3. überprüfen sie, ob Ereignis zwischen date_from und DATE_TO

Hier sind meine Filter:

Aufgabe 1

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

Aufgabe 2

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

Aufgabe 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() 

Aber Code nicht, weil nicht funktionieren, wenn ich {{}} object.event_from Dezember 11, 2016, 17:00 Uhr und heute ist der 12. Dezember 2016, 16:31 Uhr. Zähler zeigt Stunden 1.28 statt Tage

+3

Sie müssen spezifischer sein als "funktioniert nicht", erhalten Sie eine Fehlermeldung? – Will

+0

@wird bitte mein Update überprüfen –

Antwort

2

Ich glaube, Sie Ihre Logik rückwärts haben:

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

Wenn ein gegebenes time (sagen wir irgendwann gestern) + 24 Stunden größer ist, als jetzt, dass bedeutet, dass es weniger als 24 Stunden her war (weil das Hinzufügen von 24 Stunden zu einer Zeit in der Zukunft führt).

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

Wenn eine gegebene time + 24 Stunden weniger als im Augenblick ist, bedeutet dies, dass time vor mehr als 24 Stunden war, weil die Zugabe noch einen Tages in der Vergangenheit.

Also, wo immer Sie anrufen, werden Ihre Funktionen das Gegenteil erwarten. Schalten Sie die < und > in diesen Funktionen, und es sollte dies korrigieren.

See here für mehr auf einen Tag subtrahieren.

Verwandte Themen