Converti Epoch in Datetime in Python

Rayven Esplanada 10 ottobre 2023
  1. Usa il modulo time per convertire Epoch in Datetime in Python
  2. Usa il modulo datetime per convertire Epoch in Datetime in Python
Converti Epoch in Datetime in Python

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().

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

Articolo correlato - Python DateTime