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)中。有关完整列表,请参阅