now from example create biblioteca python datetime timezone pytz

python - from - pytz y astimezone() no se pueden aplicar a un datetime ingenuo



timedelta python example (3)

Para las pytz horarias de pytz , use su método .localize() para convertir un objeto de datetime ingenuo en uno con una zona horaria:

start_date = local_tz.localize(start_date)

Para las zonas horarias sin una transición DST, el método .replace() para adjuntar una zona horaria a un objeto de datetime ingenuo normalmente también debería funcionar:

start_date = start_date.replace(tzinfo=local_tz)

Consulte la hora localizada y la aritmética de fecha de la documentación de pytz para obtener más detalles.

Tengo una fecha y necesito que sea consciente de la zona horaria.

local_tz = timezone(''Asia/Tokyo'') start_date = ''2012-09-27'' start_date = datetime.strptime(start_date, "%Y-%m-%d") start_date = start_date.astimezone(local_tz) now_utc = datetime.now(timezone(''UTC'')) local_now = now_utc.astimezone(local_tz)

Necesito encontrar si esto es cierto:

print start_date>local_now

Pero me sale este error.

start_date = start_date.astimezone(local_tz) ValueError: astimezone() cannot be applied to a naive datetime

Convierto utc a tokio sin problema. Necesito hacer que el anuncio de la zona horaria comience bien en tokyo.

Gracias


Podría usar local_tz.localize(naive_dt, is_dst=None) para convertir un objeto de fecha y hora ingenuo en uno compatible con la zona horaria.

from datetime import datetime import pytz local_tz = pytz.timezone(''Asia/Tokyo'') start_date = local_tz.localize(datetime(2012, 9, 27), is_dst=None) now_utc = datetime.utcnow().replace(tzinfo=pytz.utc) print start_date > now_utc

is_dst=None obliga a .localize () a generar una excepción si la hora local es ambigua.


Si está utilizando Django Rest Framework, podría anular la clase DateTimeField como:

class DateTimeFieldOverridden(serializers.DateTimeField): def to_representation(self, value): local_tz = pytz.timezone(TIME_ZONE) value = local_tz.localize(value) return super(DateTimeFieldOverridden, self).to_representation(value)

Y lo usas así en tu serializador:

date_time = DateTimeFieldOverridden(format=''%d-%b-%Y'', read_only=True)

Espero que esto ayude a alguien.