因此,这个问题特别是关于在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和前述时区错误.
如何为一天中的最小部分和最大部分创建两个时区感知的日期时间?