Datetime получил наивное время даты, в то время как я уточнил до часового пояса
Я работаю над проектом Django. Вот мой код :
today = datetime.datetime.now()
currentperiod = Day.objects.get(enddate__gte=today.date(),
startdate__lte=today.date())
И я получил это сообщение :
RuntimeWarning: DateTimeField Day.startdate received a naive datetime (2021-10-04 00:00:00) while time zone support is active.
warnings.warn("DateTimeField %s.%s received a naive datetime "
Так что я попробовал :
today = datetime.datetime.now()
today = pytz.timezone("Europe/Paris").localize(today, is_dst=None)
currentperiod = Period.objects.get(enddate__gte=today.date(),
startdate__lte=today.date())
Но это не работает, тогда как я использовал pytz, я предполагаю, что это происходит из today.date()
, но я не знаю, как действовать дальше ...
Можете ли вы мне помочь?
Большое спасибо!
A date
не содержит информации о часовом поясе, поэтому локализация не работает. Что вы можете сделать, так это усечь today и затем добавить это в качестве фильтрации:
today = datetime.datetime.now()
today = pytz.timezone("Europe/Paris").localize(today, is_dst=None)
today = today.replace(hour=0, minute=0, second=0, microsecond=0)
currentperiod = Period.objects.get(
startdate__lte=today,
enddate__gte=today
)
Если вы хотите проверить enddate
к концу дня, то вы можете работать с:
from datetime import timedelta
today = datetime.datetime.now()
today = pytz.timezone("Europe/Paris").localize(today, is_dst=None)
today = today.replace(hour=0, minute=0, second=0, microsecond=0)
currentperiod = Period.objects.get(
startdate__lte=today,
enddate__gte=today + timedelta(days=1, microseconds=-1)
)