Я настроил свой часовой пояс в настройках, как America/Guatemala
, и у меня есть некоторые поля datetime в моих моделях, я использую default=timezone.now
, но он не сохраняет мой местный час, что является UTC -6: 00, сохраняет его как UTC-00: 00. Я не могу это изменить, потому что теперь есть важные данные, хранящиеся в базе данных.Как создать datetime для Django в UTC
У меня есть проблемы с извлечением данных в QuerySet, я отправить строку в request.POST
так:
date='1/09/2016'
И я попытался это настроить свою дату запроса:
f=date.split('/')
if len(f)>1:
initialdate=datetime.datetime(int(f[2]),int(f[1]),int(f[0]),0,0,0,tzinfo=pytz.UTC)
finaldate=datetime.datetime(int(f[2]),int(f[1]),int(f[0]),23,59,59,tzinfo=pytz.UTC)
И это мой запрос:
sale=Sale.objects.filter(Q(pk=int(cod))|Q(sale_date__range=(initialdate,finaldate)))
Но из-за 6 часов разницы между мои сохраненные данные и мои локальные даты и время, если я сохраню продажу в 18:01 по местному времени, сохраненные данные будут сохранены как 00:01 утра завтра. Если я хочу проверить все продажи, которые я сделал сегодня, это не показывает мне продажи после 6 вечера, потому что они сохраняются в другую дату.
У меня есть еще один запрос, в котором я отправляю две разные даты, и я использую тот же код, я просто добавляю время 0,0,0
к первому дате и 23,59,59
ко второй дате, но у меня такая же проблема.
Мой вопрос: как я могу добавить эти шесть часов к датам, которые я использую в качестве параметров? Мне нужно знать дату и время, и я не могу ничего изменить в своей модели, я могу изменить только параметры, которые я отправляю на запрос.
Я попробовал ваш код, он занимает шесть часов с нынешними минимальными и максимальными часов, но есть проблема, в моем по местному времени в 22:11 часов 12 сентября, и сервер имеет 4:11 часов 13 сентября, поэтому у него есть дополнительный день. Когда подкрепление сделано, оно дает мне начальную дату = 18:00 12 сентября, а окончательный срок - 18:00 13 сентября.Итак, если в мое местное время я сделал продажу в 16:00, и я хочу обменять сегодняшние продажи в 10 вечера, я могу видеть только продажи, которые были сделаны после 18:00, прежде чем продажи не будут показаны. Как я могу это решить? – elG
Какова ваша версия Django? Начиная с версии 1.9 django имеет поиск по дате (https://docs.djangoproject.com/el/1.10/ref/models/querysets/#date). В этом случае вы можете сделать что-то вроде 'Sale.objects.filter (sale_date__date = initialdate)' где 'initialdate = timezone.now(). Astimezone (pytz.timezone ('America/Guatemala')). Date()' Какая у вас база данных? –
Или вы можете воспользоваться своим местным временем, преобразовать его в часовой пояс сервера и объединить с time.min/time.max. –