Converter época para data em Python

  1. Utilize o módulo time para converter a época para a data em Python
  2. Use o módulo datetime para converter Epoch em Datetime em Python

Este tutorial irá introduzir como converter segundos de época para o formato de data em Python.

Epoch é um termo para o número de segundos que decorreram desde a data da época - 1 de Janeiro de 1970. O ano de 1970 é a data de lançamento do sistema operativo UNIX. O tempo de época é também chamado alternativamente de UNIX timestamp.

Por exemplo, a época para a data de 25 de Novembro de 2020 (00:00:00) seria 1606262400, que é o número de segundos que decorreram desde 1970/01/01 até essa data.

Utilize o módulo time para converter a época para a data em Python

O módulo Python time fornece funções convenientes relacionadas com o tempo. A função fornece um grande suporte para cálculos relacionados com os carimbos de tempo UNIX.

Por exemplo, a função time.localtime() aceita epoch segundos como argumento e gera uma sequência de valores de tempo que consiste em 9 sequências de tempo.

Vamos utilizar um tempo de época aleatório para este exemplo.

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() produz um tuple struct_time() com os detalhes do tempo da época contendo o ano exacto, mês, dia, e outros detalhes do tempo da data que o tempo da época contém.

O módulo time tem outra função time.strftime() para converter o tuple num formato de data/hora.

A função aceita 2 argumentos, o primeiro argumento é uma string contendo o formato especificado para a conversão, e o segundo argumento é o struct_time()tuple.

Agora, converta o mesmo exemplo de tempo de época acima num formato de data/hora legível.

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

Para além deste formato, outro formato genérico de data seria o nome completo do mês e incluindo o dia da semana. Vamos experimentar isso.

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

Outro formato útil em strftime() que só precisa de um único caracter é %c, que é a representação genérica de data e 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

Use o módulo datetime para converter Epoch em Datetime em Python

datetime é outro módulo em Python que suporta funções relacionadas com o tempo. A diferença é que o módulo time centra-se em carimbos horários Unix enquanto que o módulo datetime suporta uma vasta gama de funções de data e hora enquanto ainda suporta muitas das operações que o módulo tempo tem.

O módulo datetime tem a função fromtimestamp(), que aceita segundos de época e um objecto datetime.

Vamos experimentar um segundo exemplo de época diferente para este módulo.

Nota

A datetime é repetida intencionalmente duas vezes. Dentro do módulo datetime é um objecto datetime com a função fromtimestamp(). O date e o time são também objectos dentro do módulo datetime.

import datetime

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

print('Date:', time_val)

Se datetime.datetime é exclusivamente o objecto que está a ser utilizado dentro do módulo datetime, então importe-o do módulo para evitar que o código pareça redundante.

from datetime import datetime

Resultado:

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

Para converter o datetime noutro formato, datetime() também tem a função utilitária strftime() que fornece a mesma funcionalidade 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

Em resumo, estas são as duas principais formas de converter a época para o formato datetime em Python. Ambos os módulos time e datetime fornecem funções que podem ser convenientemente utilizadas para a conversão de data/hora.

Ambos os módulos têm a função strftime(), que é uma forma conveniente de formatação de datas.

Aqui está uma referência para se familiarizar com formatos de data/hora em Python, para poder personalizar a formatação de datas utilizando strftime().

Artigo relacionado - Python Datetime

  • Subtrair data/hora em Python
  • Como Converter a Coluna DataFrame para DataTempo em Pandas