Python 在Django中筛选日期时间范围为(00:00到23:59:99)的对象

Python 在Django中筛选日期时间范围为(00:00到23:59:99)的对象,python,django,django-models,django-queryset,django-timezone,Python,Django,Django Models,Django Queryset,Django Timezone,我使用了带有日期的django模型过滤器 原始数据具有非洲/阿比让时间(UTC+00:00),我将此数据保存在数据库中 我设置了亚洲/首尔的时区(UTC+09:00),并将其保存在我的数据库中 但我用time_range=[2015-11-152015-11-16]过滤数据,我得到了15点到14点的数据。我想从0点到23点获取数据 我怎么能得到这个?是的,但效果不好 class Post(models.Model): created_time = models.DateTimeField

我使用了带有日期的django模型过滤器

原始数据具有非洲/阿比让时间(UTC+00:00),我将此数据保存在数据库中

我设置了亚洲/首尔的时区(UTC+09:00),并将其保存在我的数据库中

但我用time_range=[2015-11-152015-11-16]过滤数据,我得到了15点到14点的数据。我想从0点到23点获取数据

我怎么能得到这个?是的,但效果不好

class Post(models.Model):
    created_time = models.DateTimeField()
若我有一个像post这样的模型,我从用户那个里得到日期

input_date = '2015-11-16' (from user)
from_date = datetime.strptime(input_date, '%Y-%m-%d').date()
to_date = from_date + datetime.timedelta(days=1)
posts = Post.objects.filter(created_time__range=[from_date, to_date])
我使用了上面的代码,得到了2015-11-15 15:00:00到2015-11-16 14:00:00的数据


以下是您可以设置的datetime范围,从2015-11-16 00:002015-11-16 23:59:99

from datetime import datetime as dt
import datetime 

input_date = '2015-11-16'
# convert string to datetime
from_date = dt.strptime(input_date, '%Y-%m-%d').date()
# combine `from_date` with min time value (00:00)
from_date = datetime.datetime.combine(from_date, datetime.time.min)
# combine `from_date` with max time value (23:59:99) to have end date
to_date = datetime.datetime.combine(from_date, datetime.time.max)
posts = Post.objects.filter(created_time__range=(from_date, to_date))
您还可以使用:

从日期时间导入日期时间
输入日期='2015-11-16'
#将字符串转换为日期时间
from_date=datetime.strtime(输入_date,%Y-%m-%d')。date()
posts=Post.objects.filter(
创建时间年=从日期年,
创建时间月份=从日期月份,
创建时间日期=从日期日期开始,
)
在您的情况下,请使用:

datetime.datetime.combine(从_date,datetime.time.max).replace(tzinfo=timezone.utc)

请发布重新创建此错误所需的最少代码。目前还不清楚如何将日期传递到
\u范围
过滤器中,以及它们是什么类型的。@GwynBleidD,谢谢,我知道了。我添加了一些示例代码。谢谢您的回答。但我不知道为什么它不起作用。开始时间是15点,就像照片一样。是的,这很奇怪。我用类似的对象做了一些测试,我在00:00到23:59:99之间得到它们。你能添加你的全部功能吗?不幸的是,我需要两天之间的数据。这是使用过滤器。如果您需要整个项目,我将更改我的github公共。我会找到一个原因。它是由本机日期时间引起的。因此,我编辑了“datetime.datetime.combine(from_date,datetime.time.max).replace(tzinfo=timezone.utc)”,效果很好。