¿Cuál es la forma correcta de convertir un tiempo ingenuo y un tzinfo
en una hora UTC? Decir que tengo:conversión de pytz utc
d = datetime(2009, 8, 31, 22, 30, 30)
tz = timezone('US/Pacific')
Primera forma, pytz inspirado:
d_tz = tz.normalize(tz.localize(d))
utc = pytz.timezone('UTC')
d_utc = d_tz.astimezone(utc)
segundo camino, desde UTCDateTimeField
def utc_from_localtime(dt, tz):
dt = dt.replace(tzinfo=tz)
_dt = tz.normalize(dt)
if dt.tzinfo != _dt.tzinfo:
# Houston, we have a problem...
# find out which one has a dst offset
if _dt.tzinfo.dst(_dt):
_dt -= _dt.tzinfo.dst(_dt)
else:
_dt += dt.tzinfo.dst(dt)
return _dt.astimezone(pytz.utc)
Ni que decir esas dos métodos producen resultados diferentes para unos pocos zonas horarias.
La pregunta es: ¿cuál es la forma correcta?
me sorprende que nadie borra 'Gracias' del cuerpo de la cuestión. ¡Veamos cuánto tiempo lleva quitarlo! – Art
Según mis cálculos, solo 897 días. – Will
¡Gracias, Will, por enmendar el error! – Art