Convertir Epoch a Datetime en Python

Rayven Esplanada 10 octubre 2023
  1. Usar el módulo time para convertir Epoch a Datetime en Python
  2. Usa el módulo datetime para convertir la época en Datetime en Python
Convertir Epoch a Datetime en Python

Este tutorial introducirá cómo convertir los segundos de época al formato de fecha y hora en Python.

Época es un término para el número de segundos que han transcurrido desde la fecha de la época, el 1 de enero de 1970. El año 1970 es la fecha de lanzamiento del sistema operativo UNIX. El tiempo de época también se denomina alternativamente como marca de tiempo de UNIX.

Por ejemplo, la época para la fecha del 25 de noviembre de 2020 (00:00:00) sería 1606262400, que es el número de segundos que han transcurrido desde el 1 de enero de 1970 hasta esa fecha.

Usar el módulo time para convertir Epoch a Datetime en Python

El módulo Python time proporciona convenientes funciones relacionadas con el tiempo. La función proporciona un gran soporte para los cálculos relacionados con las marcas de tiempo de UNIX.

Por ejemplo, la función time.localtime() acepta los segundos de época como argumento y genera una secuencia de valores de tiempo que consiste en 9 secuencias de tiempo.

Usemos un tiempo de época aleatorio para este ejemplo.

import time

epoch_time = 1554723620
time_val = time.localtime(epoch_time)

print("Date in time_struct:", time_val)

Resultado:

Date in time_struct: time.struct_time(tm_year=2019, tm_mon=4, tm_mday=8, tm_hour=19, tm_min=40, tm_sec=20, tm_wday=0, tm_yday=98, tm_isdst=0)

localtime() produce una tupla struct_time() con los detalles de la hora de época que contiene el año, el mes, el día y otros detalles de fecha y hora que contiene la hora de época.

El módulo time tiene otra función time.strftime() para convertir la tupla en un formato de fecha y hora.

La función acepta 2 argumentos, el primer argumento es una cadena que contiene el formato especificado para la conversión, y el segundo argumento es la struct_time() tupla.

Ahora, convierte el mismo ejemplo de época y hora de arriba en un formato de fecha y hora legible.

import time

epoch_time = 1554723620
time_formatted = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(epoch_time))

print("Formatted Date:", time_formatted)

Resultado:

Formatted Date: 2019-04-08 19:40:20

Aparte de este formato, otro formato de fecha genérico sería el nombre completo del mes e incluiría el día de la semana. Probemos eso.

import time

epoch_time = 1554723620
time_formatted = time.strftime("%A, %B %-d, %Y %H:%M:%S", time.localtime(epoch_time))

print("Formatted Date:", time_formatted)
Formatted Date: Monday, April 8, 2019 19:40:20

Otro formato útil en strftime() que sólo necesita un único carácter es %c, que es la representación genérica de la fecha y la hora para Locale.

time_formatted = time.strftime("%c", time.localtime(epoch_time))

print("Formatted Date:", time_formatted)

Resultado:

Formatted Date: Mon Apr 8 19:40:20 2019

Usa el módulo datetime para convertir la época en Datetime en Python

datetime es otro módulo en Python que soporta funciones relacionadas con el tiempo. La diferencia es que el módulo time se centra en las marcas de tiempo de Unix mientras que datetime soporta un amplio rango de funciones de fecha y hora mientras que sigue soportando muchas de las operaciones que el módulo time tiene.

datetime tiene la función fromtimestamp() que acepta segundos de época y un objeto datetime.

Probemos un segundo ejemplo de época diferente para este módulo.

Nota
El datetime se repite intencionalmente dos veces. Dentro del módulo datetime hay un objeto datetime con la función fromtimestamp(). date y time también son objetos dentro del módulo datetime.
import datetime

epoch_time = 561219765
time_val = datetime.datetime.fromtimestamp(epoch_time)

print("Date:", time_val)

Si datetime.datetime es exclusivamente el objeto que se está utilizando dentro del módulo datetime, entonces impórtelo desde el módulo para evitar que el código parezca redundante.

from datetime import datetime

Resultado:

Date: 1987-10-14 22:22:45

Para convertir la datetime a otro formato, datetime() también tiene la función de utilidad strftime() que proporciona la misma funcionalidad que time.strftime().

import datetime

epoch_time = 561219765
time_formatted = datetime.datetime.fromtimestamp(epoch_time).strftime(
    "%A, %B %-d, %Y %H:%M:%S"
)

print("Formatted Date:", time_formatted)

Resultado:

Formatted Date: Wednesday, October 14, 1987 22:22:45

En resumen, estas son las dos formas principales de convertir la época al formato datetime en Python. Tanto el módulo time como el módulo datetime proveen funciones que pueden ser convenientemente usadas para la conversión datetime.

Ambos módulos tienen la función strftime(), que es una forma conveniente de formatear las fechas.

Aquí hay una referencia para familiarizarse con los formatos de fecha y hora en Python para poder personalizar el formato de la fecha usando strftime().

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Artículo relacionado - Python DateTime