Salta al contenuto principale

Lavorare con le date in PHP

Profile picture for user luca77king

Per un programmatore, lavorare con le date in PHP può essere complicato. Sia che stiate cercando di convertire le date tra diversi formati, di confrontare due timestamp o semplicemente di capire la data e l'ora di ieri, capire le basi di questo concetto vi aiuterà a navigare e a lavorare con le date in modo più efficiente. In questo post, forniremo una panoramica dei concetti di base per lavorare con le date in PHP, in modo da avere tutte le informazioni necessarie a portata di mano. Tratteremo argomenti come la creazione di nuovi oggetti DateTime, l'accesso ai valori dei singoli componenti di un oggetto DateTime, come analizzare il formato stringa ISO in un timestamp e molto altro ancora!

Lavorare con le date in PHP è una delle operazioni più comuni nello sviluppo di applicazioni web. PHP mette a disposizione diverse funzioni per la gestione delle date, che permettono di ottenere informazioni come il giorno, il mese, l'anno, l'ora, i minuti e i secondi.

Per ottenere la data corrente, si può utilizzare la funzione date:

echo date("d/m/Y H:i:s");

Questo codice restituirà la data corrente nel formato giorno/mese/anno ora:minuti:secondi. Ad esempio, se la data corrente è il 4 gennaio 2023 alle 12:30:15, il codice restituirà "04/01/2023 12:30:15".

È possibile personalizzare il formato della data utilizzando diversi caratteri:

  • d rappresenta il giorno con due cifre
  • m rappresenta il mese con due cifre
  • Y rappresenta l'anno con quattro cifre
  • H rappresenta l'ora con due cifre
  • i rappresenta i minuti con due cifre
  • s rappresenta i secondi con due cifre

È anche possibile utilizzare la funzione strtotime per convertire una data in formato testuale in una data Unix Timestamp. Una data Unix Timestamp è un numero che rappresenta il numero di secondi trascorsi dal 1 gennaio 1970.

Ecco un esempio di utilizzo della funzione strtotime:

$data_stringa = "4 gennaio 2023";
$timestamp = strtotime($data_stringa);
echo $timestamp;

Questo codice restituirà il numero di secondi trascorsi dal 1 gennaio 1970 al 4 gennaio 2023. Ora, tenendo in considerazione che quando lavoriamo con le date provenienti dal database, dobbiamo sempre convertire la data in formato italiano, vediamo come unire i due esempi precedenti.

$data_stringa = '4 gennaio 2023';
$timestamp = strtotime($data_stringa); // converte una data formattata in un timestamp

$date = date('Y-m-d', $timestamp); // formatta la data come YYYY-MM-DD
echo $date; // output: 2023-01-04

$date = date('d/m/Y', $timestamp); // formatta la data come DD/MM/YYYY
echo $date; // output: 04/01/2023

Il secondo argomento di date è opzionale e può essere utilizzato per specificare un timestamp da formattare invece dell'ora corrente. 

Calcolare la differenza tra due date

Per calcolare la differenza tra due date, puoi utilizzare la funzione strtotime di PHP per convertire le date in timestamp, quindi utilizzare la funzione abs per calcolare la differenza assoluta tra i due timestamp. Ecco un esempio per calcolare la differenza in giorni:

$inizio = '4 gennaio 2023';
$fine = '10 gennaio 2023';

$inizio_ts = strtotime($inizio);
$fine_ts = strtotime($fine);

$differenza = abs($fine_ts - $inizio_ts) / 86400; // 86400 è il numero di secondi in un giorno
echo "La differenza è di $differenza giorni"; // output: La differenza è di 6 giorni

Supponiamo di dover lavorare ad un gestionale, abbiamo le attività di tutti i dipendenti con inizio e fine espresse in datetime. Faremo la stessa cosa ma alla fine divideremo la differenza per il numero di secondi in un'ora (3600).

$inizio = '4 gennaio 2023 10:00';
$fine = '4 gennaio 2023 18:00';

$inizio_ts = strtotime($inizio);
$fine_ts = strtotime($fine);

$differenza = abs($fine_ts - $inizio_ts) / 3600; // 3600 è il numero di secondi in un'ora
echo "La durata dell'attività è stata di $differenza ore"; // output: La durata dell'attività è stata di 8 ore

Conclusioni

La gestione delle date è molto importante nello sviluppo di applicazioni web, poiché permette di lavorare con informazioni temporali e di creare programmi che tengono conto del tempo trascorso o che hanno scadenze.

In conclusione, PHP mette a disposizione diverse funzioni per la gestione delle date, che permettono di ottenere informazioni sulla data corrente, di convertire una data in formato testuale in una data Unix Timestamp e di personalizzare il formato della data. La gestione delle date è un elemento fondamentale nello sviluppo di applicazioni web.