Saltar al contenido

Obtener la zona horaria utilizada por datetime.datetime.fromtimestamp()

Si hallas alguna incompatibilidad en tu código o proyecto, recuerda probar siempre en un ambiente de testing antes añadir el código al proyecto final.

Solución:

datetime.fromtimestamp(ts) convierte “segundos desde la época” en un objeto ingenuo de fecha y hora que representa la hora local. tzinfo es siempre None en este caso.

La zona horaria local puede haber tenido un desplazamiento UTC diferente en el pasado. En algunos sistemas que brindan acceso a una base de datos histórica de zonas horarias, fromtimestamp() puede tenerlo en cuenta.

Para obtener el desplazamiento UTC utilizado por fromtimestamp():

utc_offset = fromtimestamp(ts) - utcfromtimestamp(ts)

Consulte también Obtención del desplazamiento UTC de la computadora en Python.

De la documentación de Python:

método de clasedatetime.fromtimestamp(timestamp, tz=None)

Devuelve la fecha y la hora locales correspondientes a la marca de tiempo POSIX, como la que devuelve time.time(). Si es un argumento opcional tz es None o no especificado, la marca de tiempo se convierte a la fecha y hora local de la plataforma, y ​​el devuelto datetime el objeto es ingenuo.

Más tz debe ser una instancia de una clase tzinfo subclase, y la marca de tiempo se convierte en tzla zona horaria de . En este caso el resultado es equivalente a tz.fromutc(datetime.utcfromtimestamp(timestamp).replace(tzinfo=tz)).

los key parte de esta descripción en relación con su pregunta es que cuando no especifica una zona horaria, no solo usa la zona horaria local, sino que el resultado es ingenuo. Parece que quieres que sea consciente.

Esta es una distinción particular hecha por Python, y se analiza justo en la parte superior de la documentación de fecha y hora.

Si lo que quieres es un datetime eso es consciente de la zona horaria local, pruebe la biblioteca tzlocal. Se centra en ese problema en particular. Véase también esta pregunta.

Si conoce la zona horaria de la marca de tiempo que desea convertir, simplemente puede enviarla mientras llama fromtimestamp:

>>> from datetime import datetime
>>> import pytz
>>>
>>> datetime.fromtimestamp(1562684265, pytz.timezone("Europe/Stockholm"))
datetime.datetime(2019, 7, 9, 16, 57, 45, tzinfo=)
>>>
>>> datetime.fromtimestamp(1562684265, pytz.timezone("UTC"))
datetime.datetime(2019, 7, 9, 14, 57, 45, tzinfo=)

Puntuaciones y reseñas

Te invitamos a defender nuestra función mostrando un comentario y valorándolo te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *