如果时间在django应用程序中越来越少一天

时间:2016-12-12 15:05:46

标签: python django time django-template-filters

我有django app以及为日期设置正确条件的问题:

  1. 我想在活动开始之前检查是否超过24小时(1天) - 显示日期
  2. 我想检查一下活动前不到24小时(1天) - 显示小时和分钟
  3. 检查事件是否在date_from和date_to
  4. 之间

    以下是我的过滤器:

    任务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年12月11日下午5点 今天是2016年12月12日,下午4:31 计数器显示小时1:28而不是天

1 个答案:

答案 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了解更多关于减去一天的信息。