Quando si opera nel campo dei software gestionali, si ha sempre la necessità di lavorare con le date e le loro mille sfaccettature. Gestire una data non è sempre cosa facile poiché essa può essere formattata in modi diversi e la necessità del momento può spingerci a doverla nuovamente riformattare secondo un canone decisamente diverso (se non opposto) rispetto all’originale.
In questo articolo vedremo come, grazie all’ausilio delle librerie del linguaggio, è possibile, con poche righe di codice, “muovere” una data nel passato o nel futuro partendo da una a nostra disposizione.
Immaginiamo di dove gestire la scadenza di un servizio. All’utente verrà chiesto (nel modo che si richiede più opportuno) di fornire una data di avvio del servizio e la sua durata. Nel nostro caso l’utente dovrà specificare quest’ultimo parametro in giorni. Riversiamo i dati così ottenuti rispettivamente nelle variabili data_avvio e durata_giorni e calcoliamo la data di chiusura del servizio.
—python—————-
from datetime import date, datetime, time, timedelta
def calcola_scadenza(data_attivazione, durata_giorni):
str_data_attivazione = datetime.strptime(data_attivazione,’%Y-%m-%d’)
data_fine = data_attivazione + timedelta(days=durata_giorni)
res = datetime.strftime(data_fine,’%Y-%m-%d’)
return res
str_data_attivazione = datetime.strptime(data_attivazione,’%Y-%m-%d’)
data_fine = data_attivazione + timedelta(days=durata_giorni)
res = datetime.strftime(data_fine,’%Y-%m-%d’)
return res
——————————
Innanzitutto partiamo con l’importazione del necessario dalla libreria datetime. Questa libreria è molto versatile ed utilissima quando si vuole lavorare con questo particolare tipo di dati. Inoltre è ben documentata ed è semplice da usare nei propri progetti. Ora definiamo la nostra funzione che accetta come parametri la data di avvio e la durata in giorni del servizio. Successivamente, mediante l’ausilio della funzione datetime.strptime si converte la stringa in un formato data che rispetta la formattazione definita come secondo parametro. Nel nostro caso la data avrà formato anno-mese-giorno. Qui arriva la parte interessante dell’algoritmo. Come si può vedere la data di fine servizio viene calcolata grazie all’uso di timedelta. Come il nome della funzione lascia intendere, timedelta serve a creare una data con un offset calcolato in base ai parametri passati alla stessa. In questo caso abbiamo deciso di spostare la data attuale di n giorni nel fututo dicendo a timedelta di spostarsi in base ai giorni (days). Infine con datetime.strftime compiamo l’operazione inversa rispetto a datetime.strptime, ovvero otteniamo una stringa partendo da una data e lasciamo la funzione ritornando il valore appena ottenuto.
Nonostante l’esempio sia volutamente ridotto al minimo indispensabile, è possibile notare con facilità come gli strumenti mostrati siano potenti e versatili semplificando non di poco il lavoro dello sviluppatore. Timedelta, ad esempio, ci permette di tornare indietro passando i parametri in forma negativa. Questo può essere notevolmente utile quando si vuole sapere la data di qualche giorno o mese fa. Importante è anche l’uso di datetime. Grazie a strftime e strptime è possibile ottenere date formattate come meglio si crede. Ora non resta che sperimentare quanto imparato.

