gpt4 book ai didi

python - 筛选具有日期时间范围的对象 (00 :00 to 23:59:99) in Django

转载 作者:太空宇宙 更新时间:2023-11-03 17:14:52 25 4
gpt4 key购买 nike

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

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

我设置了关于亚洲/首尔的时区(UTC+09:00),它在我的数据库中保存得很好。

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

我怎样才能得到这个?我愿意this url ,但效果不佳。

class Post(models.Model):
created_time = models.DateTimeField()

如果我有一个像帖子这样的模型,并且我从用户那里获取日期。

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的数据。

enter image description here enter image description here enter image description here

最佳答案

您可以通过以下方法获得从 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))

您还可以使用:

from datetime import datetime

input_date = '2015-11-16'
# convert string to datetime
from_date = datetime.strptime(input_date, '%Y-%m-%d').date()
posts = Post.objects.filter(
created_time__year=from_date.year,
created_time__month=from_date.month,
created_time__day=from_date.day,
)

根据您的情况,请使用:

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

关于python - 筛选具有日期时间范围的对象 (00 :00 to 23:59:99) in Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33736182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com