Saltar al contenido

Cadena de Python a la zona horaria de Django (fecha y hora conscientes)

Solución:

Sé que esto es antiguo, pero tal vez sea útil ya que también me encontré en esta situación:

¿Qué pasa con el uso de make_aware ()?

from datetime import datetime
from django.utils.timezone import make_aware

date="22-05-2018"
aware = make_aware(datetime.strptime(date, '%d-%m-%Y'))

Esto usará la zona horaria actualmente activa (activada por timezone.activate). Si no se activa explícitamente ninguna zona horaria, se usaría la zona horaria predeterminada: TIME_ZONE especificado en settings.py.

Estás comparando Python que desconoce la zona horaria Date objetos con la zona horaria consciente DateTimeField campos en su base de datos. Probablemente sea más intuitivo de usar DateTime objetos, y estos se pueden hacer que reconozcan la zona horaria fácilmente de la siguiente manera:

import datetime
import pytz

start_date="15-01-2016" 
end_date="16-01-2016"
date_format="%d-%m-%Y"

unaware_start_date = datetime.datetime.strptime(start_date, date_format)
aware_start_date = pytz.utc.localize(unaware_start_date)

unaware_end_date = datetime.datetime.strptime(end_date, date_format)
aware_end_date = pytz.utc.localize(unaware_end_date)

my_list = MyModel.objects.filter(created_at__range=(aware_start_date, aware_end_date))

Esto crea unaware_start_date y unaware_end_date DateTime objetos usando strptime(). Luego usa pytz.utc.localize para que los objetos sean conscientes de la zona horaria (deberá reemplazar utc con su zona horaria relevante).

A continuación, puede tener conciencia de la zona horaria DateTime objetos – aware_start_date y aware_end_date. Alimentarlos en su filtro debería producir los resultados deseados.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *