2012-06-28 9 views
12

Tengo una fecha y una hora que estoy intentando combinar en Python. La hora es consciente de la zona horaria.¿Cómo combino una fecha y hora de zona horaria en Python?

Sin embargo, cuando intento combinarlos, me sale mal.

import pytz 
from datetime import time, date 
NYC_TIME = pytz.timezone('America/New_York') 

start_date = date(2012, 7, 7) 
start_time = time(hour = 0, tzinfo = NYC_TIME) 
combined = datetime.combine(start_date, start_time) 
print combined 
print NYC_TIME.normalize(combined) 

Esto imprime 2012-07-07 00:00:00-05:00, que normaliza a 2012-07-07 01:00:00-04:00. ¿Por qué está pasando esto? ¿Cómo puedo evitarlo?

+0

Supongo que al "evitarlo" desea que la hora local permanezca fija, incluso si el desplazamiento UTC cambia debido al horario de verano. –

+0

Estaba esperando, si tengo un tiempo 'MIDNIGHT = time (hour = 0, tzinfo = NYC_TIME)', que permanecería la medianoche sin importar la fecha en que lo inserté. Aparentemente, ese no es el caso. –

Respuesta

3

Un tiempo sin una fecha adjunta debe asumir que no se encuentra en el período de horario de verano. Una vez que le asigne una fecha, esa suposición se puede corregir. El desplazamiento de zona cambia, y el tiempo también cambia para mantenerlo en el mismo equivalente UTC.

+1

Eso es extraño, ya que si compara dos tiempos de uso horario que no tienen un desplazamiento estático, generan un error ingenuo en la zona horaria, es decir, se niegan a asumir cualquier cosa sobre si están o no en el horario de verano. –

Cuestiones relacionadas