create - Python: cómo convertir una marca de tiempo con reconocimiento de zona horaria a UTC sin saber si el horario de verano está vigente
pytz mexico (1)
Estoy intentando convertir una marca de tiempo ingenua que siempre está en hora del Pacífico a hora UTC. En el código a continuación, puedo especificar que esta marca de tiempo que tengo está en la hora del Pacífico, pero no parece saber que debería ser un desplazamiento de -7 horas desde UTC porque es solo 10/21 y DST Aún no ha terminado.
La secuencia de comandos:
import pytz
import datetime
naive_date = datetime.datetime.strptime("2013-10-21 08:44:08", "%Y-%m-%d %H:%M:%S")
localtz = pytz.timezone(''America/Los_Angeles'')
date_aware_la = naive_date.replace(tzinfo=localtz)
print date_aware_la
Salidas:
2013-10-21 08:44:08-08:00
Debe tener un desplazamiento de -07: 00 hasta que finalice el DST el 3 de noviembre. ¿Cómo puedo obtener mi fecha de aviso de zona horaria para tener la compensación correcta cuando el horario de verano está vigente y no está vigente? ¿Pytz es lo suficientemente inteligente como para saber que DST estará vigente el 3 de noviembre?
Objetivo general: estoy tratando de convertir la marca de tiempo a UTC sabiendo que obtendré una marca de tiempo en tiempo pacífico sin ninguna indicación de si DST está en efecto o no. No estoy generando esta fecha desde Python, así que no puedo usar utc_now ().
Utilice el método de localize
:
import pytz
import datetime
naive_date = datetime.datetime.strptime("2013-10-21 08:44:08", "%Y-%m-%d %H:%M:%S")
localtz = pytz.timezone(''America/Los_Angeles'')
date_aware_la = localtz.localize(naive_date)
print(date_aware_la) # 2013-10-21 08:44:08-07:00
Esto se trata en la sección "Ejemplo y uso" de la documentación de pytz .
Y luego continuando a UTC:
utc_date = date_aware_la.astimezone(pytz.utc)
print(utc_date)