Python 用于检查datetime对象未返回预期结果的查询

Python 用于检查datetime对象未返回预期结果的查询,python,django,Python,Django,我有一个模型 class Availability(models.Model): arena = models.ForeignKey(Arena, null=True) start_date = models.DateTimeField() end_date = models.DateTimeField() 它存储特定竞技场的可用性对象。在我看来,我试图找出今天(即从午夜到午夜)特定竞技场的所有可用性对象。为此,我做了以下工作: def get_schedule(req

我有一个模型

class Availability(models.Model):
    arena = models.ForeignKey(Arena, null=True)
    start_date = models.DateTimeField()
    end_date = models.DateTimeField()
它存储特定竞技场的可用性对象。在我看来,我试图找出今天(即从午夜到午夜)特定竞技场的所有可用性对象。为此,我做了以下工作:

def get_schedule(request):
    if 'arena' in request.GET:
        arena = Arena.objects.get(id=request.GET['arena'])
        today = datetime.date.today()
        tomorrow = datetime.date.today() + datetime.timedelta(days=1)
        available_object = Availability.objects.filter(arena__id=arena.id, start_date__gte=today, end_date__lte=tomorrow)
        obj = []
        for a in available_object:
            print(a)
            obj.append({
                'start_time': a.start_date.strftime('%H:%M'),
                'end_time': a.end_date.strftime('%H:%M')
            })
        return HttpResponse(json.dumps(obj), content_type="application/json")
在我的表中,创建了以下对象

id = 1
start_date = 2015-03-04 06:00:00
end_date = 2015-03-04 09:00:00
arena_id = 2
在上述可用的\u对象查询中将arena\u id传递为2不会返回任何值。我错过了什么?

你今天的天真可能比你考试时的2014-03-04 06:00:00晚。尝试为今天和明天使用时区识别日期:

from django.utils import timezone
...
today = timezone.now().replace(hour=0, minute=0, second=0)
tomorrow = today + timedelta(days=1)

你确定今天是2015-03-04吗?您是否启用了时区支持?@Selcuk USE_TZ=True是什么启用了时间支持?我在设置文件中添加了我刚刚意识到的内容。在Django admin中,当我添加一个对象时,它会将日期和时间设置为服务器时间,因为我在印度,所以添加的时间是GMT,而我提前了5.5个小时。有解决办法吗?是的,你的方法奏效了。但是,除非Django admin server time设置为my timezone time,否则它仍然不会显示正确的日期和时间。您可以将time_ZONE='Asia/Calcutta'添加到您的settings.py(UTC+05:30)中。有关完整列表,请参阅