convertir - timedelta python example
La conversión de python datetime a timestamp y de vuelta en UTC aún usa la zona horaria local (3)
¿Estaría usted en la zona horaria CST de EE. UU. O su equivalente?
Parece que muestra qué hora era en UTC cuando tu hora local era la medianoche del 1/1/2007.
Estoy trabajando con un código que me da las marcas de tiempo utc y quiero convertirlas a las fechas apropiadas. Lamentablemente, cuando pruebo casos simples con pytz, la fecha y hora tiene un agregado de 6 horas (el desplazamiento de CST a UTC). Necesito mantener los datos de zona horaria correctos porque también estoy calculando la diferencia entre otras zonas horarias. ¿Alguna idea de por qué y cómo convertir una indicación de fecha y hora utc a una fecha y hora utc?
In [1]: import pytz
In [2]: from datetime import datetime
In [3]: import time
In [4]: datetime.fromtimestamp(time.mktime(datetime(7,1,1, tzinfo=pytz.UTC).timetuple()), tz=pytz.UTC)
Out[4]: datetime.datetime(2007, 1, 1, 6, 0, tzinfo=<UTC>)
In [5]: datetime.fromtimestamp(time.mktime(datetime(7,1,1).utctimetuple()), tz=pytz.UTC)
Out[5]: datetime.datetime(2007, 1, 1, 6, 0, tzinfo=<UTC>)
In [6]: datetime.fromtimestamp(time.mktime(datetime(7,1,1).utctimetuple()))
Out[6]: datetime.datetime(2007, 1, 1, 0, 0)
Para obtener un objeto datetime ingenuo que represente el tiempo en UTC de la marca de tiempo "segundos desde la época":
from datetime import datetime
utc_dt = datetime.utcfromtimestamp(ts)
Si desea obtener un objeto datetime consciente para la zona horaria UTC:
import pytz
aware_utc_dt = utc_dt.replace(tzinfo=pytz.utc)
Para convertirlo a alguna otra zona horaria:
tz = pytz.timezone(''America/Montreal'')
dt = aware_utc_dt.astimezone(tz)
Para convertir la marca de tiempo en un objeto datetime consciente en la zona horaria dada directamente:
dt = datetime.fromtimestamp(ts, tz)
Hmm Encontré la respuesta aquí: ¿Cómo especificar la zona horaria (UTC) al convertir a tiempo Unix? (Pitón)
In [101]: ts = calendar.timegm(datetime(2010, 7, 1, tzinfo=pytz.utc).timetuple())
In [102]: datetime.fromtimestamp(ts, tz=pytz.utc)
Out[102]: datetime.datetime(2010, 7, 1, 0, 0, tzinfo=<UTC>)