Django在过去3小时内使用created_at过滤对象

时间:2017-02-14 21:50:24

标签: python django python-3.x django-models date-range

start_date = datetime.date(2017, 1, 1)
end_date = datetime.date(2017, 2, 28)

camera_logs = CameraLog.objects.filter(camera_id=camera_id, created_at__range=(start_date, end_date))

我知道如何按天过滤,但我如何按特定小时段过滤?我需要按3, 6, 12, 24小时过滤。

2 个答案:

答案 0 :(得分:0)

只需使用datetime.datetime

start_date = datetime.datetime(2017, 1, 1, 0) # hour 0
end_date = datetime.datetime(2017, 1, 1, 3) # hour 3

这会过滤created_at在午夜到凌晨3点之间的值。

过滤三小时:

# current date with minutes, seconds, and microseconds set to 0
end_date = datetime.datetime.today().replace(minute=0, second=0, microsecond=0)
# shift that date by 3 hours to get the start of the range
start_date = end_date - datetime.timedelta(hours=3)

答案 1 :(得分:0)

这是我获取当前时间的方式,然后减去3小时的范围:

{{1}}

只需更换美国/危地马拉'与你的时区。