因此,这个问题特别是关于在Django 4.2中查询具有最大最小值的时区感知日期范围.

在settings.py中将时区设置为TIME_ZONE = 'UTC',并且有问题的模型有两个字段:

open_to_readers = models.DateTimeField(auto_now=False, verbose_name="Campaign Opens")
close_to_readers = models.DateTimeField(auto_now=False, verbose_name="Campaign Closes")

该查询如下所示

allcampaigns = Campaigns.objects.filter(open_to_readers__lte=today_min, close_to_readers__gt=today_max)

Failed Solution 1

    today_min = datetime.combine(timezone.now().date(), datetime.today().time().min)
    today_max = datetime.combine(timezone.now().date(), datetime.today().time().max)
    print("Today Min", today_min, " & Today Max", today_max)

返回以下内容,这将是一个合适的日期范围,但它也给出了下面的最小和最大错误.

Today Min 2023-10-21 00:00:00  & Today Max 2023-10-21 23:59:59.999999

DateTimeField ... received a naive datetime (9999-12-31 23:59:59.999999) while time zone support is active.

Partial Working Solution

today_min = timezone.now()
allcampaigns = Campaigns.objects.filter(open_to_readers__lte=today_min, close_to_readers__gt=today_min)

返回没有错误的结果,但给定的时间是当前时间,而不是当天的最小值或最大值.

Failed Solution 2 from 100:

    now = datetime.now(timezone.get_default_timezone())
    today_min = now.min
    today_max = now.max
    print("Today Min", today_min, " & Today Max", today_max)

返回今日最小值0001-01-01 00:00:00&今日最大值9999-12-31 23:59:59.999999和前述时区错误.

如何为一天中的最小部分和最大部分创建两个时区感知的日期时间?

推荐答案

最简单的方法可能就是:

from datetime import timedelta

from django.utils.timezone import now

date_min = now().replace(hour=0, minute=0, second=0, microsecond=0)
date_max = date_min + timedelta(days=1) - date_min.resolution
Campaigns.objects.filter(
    open_to_readers__lte=today_min, close_to_readers__gt=today_min
)

Python相关问答推荐

Pandas 按照特殊规则保留每n行

解析讨论论坛只给我第一个用户 comments ,但没有给我其他用户回复

如何对行使用分段/部分.diff()或.pct_change()?

如何判断LazyFrame是否为空?

单击Python中的复选框后抓取数据

如何在不使用字符串的情况下将namedtuple属性传递给方法?

如何使用PyTest根据self 模拟具有副作用的属性

如何防止Plotly在输出到PDF时减少行中的点数?

使用pandas、matplotlib和Yearbox绘制时显示错误的年份

分组数据并删除重复数据

Python:在类对象内的字典中更改所有键的索引,而不是仅更改一个键

当使用keras.utils.Image_dataset_from_directory仅加载测试数据集时,结果不同

运行总计基于多列pandas的分组和总和

发生异常:TclMessage命令名称无效.!listbox"

管道冻结和管道卸载

删除marplotlib条形图上的底边

Polars asof在下一个可用日期加入

可以bcrypts AES—256 GCM加密损坏ZIP文件吗?

为什么调用函数的值和次数不同,递归在代码中是如何工作的?

使用Python异步地持久跟踪用户输入