HOWTO · Python

Converti Epoch in Datetime in Python

Introduce come convertire l'epoca in data e ora in Python

In questa pagina

Questo tutorial introdurrà come convertire i secondi epoch nel formato datetime in Python.

Epoch è un termine per il numero di secondi che sono trascorsi dalla data dell’epoca - 1 gennaio 1970. L’anno 1970 è la data di rilascio del sistema operativo UNIX. L’ora dell’epoca viene anche chiamata in alternativa come timestamp UNIX.

Ad esempio, l’epoca per la data del 25 novembre 2020 (00:00:00) sarebbe 1606262400, che è il numero di secondi trascorsi dal 01/01/1970 a quella data.

Usa il modulo time per convertire Epoch in Datetime in Python

Il modulo Python time fornisce comode funzioni relative al tempo. La funzione fornisce molto supporto per i calcoli relativi ai timestamp UNIX.

Ad esempio, la funzione time.localtime() accetta epoch seconds come argomento e genera una sequenza di valori temporali composta da 9 sequenze temporali.

Usiamo un tempo di epoca casuale per questo esempio.

import time

epoch_time = 1554723620
time_val = time.localtime(epoch_time)

print("Date in time_struct:", time_val)

Produzione:

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() restituisce una tupla struct_time() con i dettagli dell’ora epoch contenente l’anno, il mese, il giorno esatti e altri dettagli datetime contenuti nell’ora epoch.

Il modulo time ha un’altra funzione time.strftime() per convertire la tupla in un formato datetime.

La funzione accetta 2 argomenti, il primo argomento è una stringa contenente il formato specificato per la conversione e il secondo argomento è la tupla struct_time().

Ora converti lo stesso esempio di epoch time sopra in un formato datetime leggibile.

import time

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

print("Formatted Date:", time_formatted)

Produzione:

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

Oltre a questo formato, un altro formato di data generico sarebbe il nome completo del mese e includendo il giorno della settimana. Proviamolo.

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

Un altro formato utile in strftime() che necessita di un solo carattere è %c, che è la rappresentazione generica di data e ora per Locale.

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

print("Formatted Date:", time_formatted)

Produzione:

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

Usa il modulo datetime per convertire Epoch in Datetime in Python

datetime è un altro modulo in Python che supporta le funzioni relative al tempo. La differenza è che il modulo time si concentra sui timestamp Unix mentre datetime supporta un’ampia gamma di funzioni di data e ora pur supportando molte delle operazioni del modulo time.

datetime ha la funzione fromtimestamp()che accetta i secondi epoch e un oggetto datetime.

Proviamo un secondo esempio di epoca diversa per questo modulo.

Nota
Il datetime è intenzionalmente ripetuto due volte. All’interno del modulo datetime c’è un oggetto datetime con la funzione fromtimestamp(). date e time sono anche oggetti all’interno del modulo datetime.
import datetime

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

print("Date:", time_val)

Se datetime.datetime è esclusivamente l’oggetto che viene utilizzato all’interno del modulo datetime, importalo dal modulo per evitare che il codice sembri ridondante.

from datetime import datetime

Produzione:

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

Per convertire il datetime in un altro formato, datetime() ha anche la funzione di utilità strftime() che fornisce la stessa funzionalità di 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)

Produzione:

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

In sintesi, questi sono i due modi principali per convertire Epoch in formato datetime in Python. Entrambi i moduli time e datetime forniscono funzioni che possono essere convenientemente utilizzate per la conversione datetime.

Entrambi i moduli hanno la funzione strftime(), che è un modo conveniente per formattare le date.

Ecco un riferimento per familiarizzare con i formati datetime in Python per poter personalizzare la formattazione della data usando strftime().