timezones mexico ids iana python timezone pytz

python - mexico - timezone ids



pytz: ¿Por qué es necesario normalizar al convertir entre zonas horarias? (2)

De la documentación de pytz:

Además, si realiza una aritmética de fecha en las horas locales que cruzan los límites de horario de verano, los resultados pueden estar en una zona horaria incorrecta (es decir, restar 1 minuto de 2002-10-27 1:00 EST y obtendrá 2002-10-27 0: 59 EST en lugar del correcto 2002-10-27 1:59 EDT). Se proporciona un método normalize () para corregir esto. Desafortunadamente, estos problemas no se pueden resolver sin modificar la implementación de la fecha y hora de Python.

Estoy leyendo la documentación no tan completa de pytz y estoy atascado en entender una parte de ella.

La conversión entre zonas horarias también requiere una atención especial. Esto también debe utilizar el método de normalización para garantizar que la conversión sea correcta.

>>> utc_dt = utc.localize(datetime.utcfromtimestamp(1143408899)) >>> utc_dt.strftime(fmt) ''2006-03-26 21:34:59 UTC+0000'' >>> au_tz = timezone(''Australia/Sydney'') >>> au_dt = au_tz.normalize(utc_dt.astimezone(au_tz)) >>> au_dt.strftime(fmt) ''2006-03-27 08:34:59 EST+1100'' >>> utc_dt2 = utc.normalize(au_dt.astimezone(utc)) >>> utc_dt2.strftime(fmt) ''2006-03-26 21:34:59 UTC+0000''

Probé este mismo ejemplo sin usar normalize y resultó igual. En mi opinión, este ejemplo no explica realmente por qué tenemos que usar la normalize al convertir objetos de datetime en diferentes zonas horarias.

Alguien, por favor, dame un ejemplo (como el de arriba) en el que el resultado difiera cuando no se esté utilizando normalize .

Gracias


Los documentos dicen que normalizar se usa como una solución para los problemas de horario de verano:

Además, si realiza una aritmética de fecha en las horas locales que cruzan los límites de horario de verano, los resultados pueden estar en una zona horaria incorrecta (es decir, restar 1 minuto de 2002-10-27 1:00 EST y obtendrá 2002-10-27 0: 59 EST en lugar del correcto 2002-10-27 1:59 EDT). Se proporciona un método normalize () para corregir esto.

Así que se utiliza para corregir algunos casos de borde que involucran DST Si no está usando las zonas horarias DST (por ejemplo, UTC), no es necesario usar normalizar.

Si no lo usas, tu conversión podría tener una hora de descanso bajo ciertas circunstancias.