Django Python-以时区格式获取明晚午夜

Django Python-以时区格式获取明晚午夜,django,Django,我想从django queryset网站上得到明天发生的所有事件的列表。我想我需要明天午夜到明天晚上11:59。我认为我的明天结束变量是正确的,如果明天开始设置为00:00:00,那么现在它就得到了准确的时间 有人能告诉我如何把下面的时间改成00:00:00吗 tomorrow_start = timezone.now() + timedelta(1) tomorrow_end = tomorrow_start + timedelta(hours=11,minutes=59) maintenan

我想从django queryset网站上得到明天发生的所有事件的列表。我想我需要明天午夜到明天晚上11:59。我认为我的明天结束变量是正确的,如果明天开始设置为00:00:00,那么现在它就得到了准确的时间

有人能告诉我如何把下面的时间改成00:00:00吗

tomorrow_start = timezone.now() + timedelta(1)
tomorrow_end = tomorrow_start + timedelta(hours=11,minutes=59)
maintenance = CircuitMaintenance.objects.filter(start_time__gte=tomorrow_start, end_time__lte=tomorrow_end)

也许它看起来不太优雅,但你可以用它来获得明天午夜:

from datetime import datetime, timedelta, time 
tomorrow_start = datetime.combine(timezone.now().date(), time(0, 0)) + timedelta(1)
您也可以这样做:

import pytz
from datetime import datetime, timedelta
timezone = pytz.timezone('Europe/London')
dt_now = datetime.now(timezone)
tomorrow_start = datetime(dt_now.year, dt_now.month, dt_now.day, tzinfo=timezone) + timedelta(1)
tomorrow_end = tomorrow_start + timedelta(hours=12)
maintenance = CircuitMaintenance.objects.filter(start_time__gte=tomorrow_start, end_time__lt=tomorrow_end)
请注意,我们更改了查询,以在距开始时间不到12小时的时间内获取所有内容。通过这种方式,您可以捕获11:59:00到12:00:00之间的60秒


ipython的示例输出:

In [1]: import pytz
   ...: from datetime import datetime, timedelta
   ...: timezone = pytz.timezone('Europe/London')
   ...: dt_now = datetime.now(timezone)
   ...: tomorrow_start = datetime(dt_now.year, dt_now.month, dt_now.day, tzinfo=timezone) + timedelta(1)
   ...: tomorrow_end = tomorrow_start + timedelta(hours=12)
   ...:

In [2]: print timezone
Europe/London

In [3]: print dt_now
2017-01-17 19:42:23.044706+00:00

In [4]: print tomorrow_start
2017-01-18 00:00:00-00:01

In [5]: print tomorrow_end
2017-01-18 12:00:00-00:01

这正在工作,但我再次收到时区警告“RuntimeWarning:DateTimeField CircuitMaintenance.end_time在时区支持处于活动状态时收到了一个原始日期时间(2017-01-18 23:59:59)。RuntimeWarning)”已更新为时区处理。
timezone
来自上面的代码。如果你不知道你的时区是什么,我真的帮不了你。我添加了:timezone=pytz.timezone('Europe/London')dt_now=datetime.now(timezone),但仍然会出现错误……我只是将代码粘贴为第一行,结果成功了。