#python #django #datetime
#python #django #datetime
Вопрос:
РЕДАКТИРОВАТЬ: я пытаюсь получить проверки и проверки за текущий день. Код, который у меня есть, таков:
def select_users():
currentTime = dt.now()
today = dt.today()
midNight = dt.combine(today, dt.min.time())
print(currentTime)
loggedIn = OnSiteLog.objects.filter(autoCheckin=False, checkIn__gte = midNight, checkOut__lte = currentTime).count()
Это выдает мне предупреждение:
/usr/local/lib/python3.6/dist-packages/django/db/models/fields/__init__.py:1421: RuntimeWarning: DateTimeField OnSiteLog.checkOut received a naive datetime (2020-09-22 21:34:55.366769) while time zone support is active.
/usr/local/lib/python3.6/dist-packages/django/db/models/fields/__init__.py:1421: RuntimeWarning: DateTimeField OnSiteLog.checkIn received a naive datetime (2020-09-22 00:00:00) while time zone support is active.
RuntimeWarning)
/usr/local/lib/python3.6/dist-packages/django/db/models/fields/__init__.py:1421: RuntimeWarning: DateTimeField OnSiteLog.checkOut received a naive datetime (2020-09-22 21:38:11.660009) while time zone support is active.
RuntimeWarning)
Я знаю, что все мои данные при регистрации и оформлении заказа хранятся как UTC. Я просто не уверен, как запросить, чтобы просто предоставить мне все проверки с полуночи в день до 11:55 вечера в тот же день.
(почти 24 часа)
Комментарии:
1. итак, вы хотите фильтровать объекты по определенному дню UTC? например, всего 23 сентября 2020 года
2. ваш вопрос сбивает с толку, вы должны переписать его более четко, особенно часть о переносе (что вы ожидаете получить в этой ситуации), если вы сохраняете данные в базе данных в UTC, почему бы вам просто не преобразовать свое местное время в время UTC и запросить с его помощью
3. обновлено, чтобы, надеюсь, сделать его более понятным.
Ответ №1:
Вам следует взглянуть на документ о часовых поясах «Когда включена поддержка часовых поясов, Django хранит информацию о дате и времени в UTC в базе данных, использует внутри себя объекты datetime с учетом часового пояса и преобразует их в часовой пояс конечного пользователя в шаблонах и формах». Вам не нужно беспокоиться о UTC в dabase при правильной настройке часового пояса в файле конфигурации.
https://docs.djangoproject.com/en/3.1/topics/i18n/timezones/
Комментарии:
1. Итак, я считаю, что я сделал это, и если это так, то все, в чем я не уверен, — это как фильтровать поля проверки или проверки (оба объекта datetimeobjects), но только в сам день (игнорируя время)
2. Вы можете фильтровать следующим образом «OnSiteLog.objects.filter(autoCheckin= False, проверка __date__gte = полночь, проверка__date__lte = текущее время).count ()» используя «checkIn__date», вы сможете фильтровать только по дате