Corso PHP/ Lezione 10: le date

La gestione delle date non è sempre così banale come sembra. Vediamo dunque come lavorare con le date in PHP attraverso brevi ma efficaci esempi

Lavorare con date ed orari è un'operazione non banale, considerata la particolare struttura dati con cui si ha a che fare. In molte applicazioni, tuttavia, si ha necessità di manipolare date, confrontarle, validarle e così via. In questa lezione vedremo in che modo possiamo operare su date ed orari nei nostri script PHP, ricorrendo ad esempi concreti.

Nel linguaggio PHP le date vengono rappresentate sotto forma di "timestamp": un timestamp è semplicemente un numero intero che corrisponde al numero di secondi trascorsi dalla cosiddetta "Unix epoch" (le ore 0:00:00 del primo gennaio 1970). Ad esempio, le ore 0:00:00 del primo gennaio 2001 corrispondono al timestamp 978303600.

Per conoscere il timestamp corrispondente ad una certa data basta invocare la funzione mktime() passandole i parametri previsti e cioè, nell'ordine, ore, minuti, secondi, mese, giorno, anno. Un ulteriore argomento, opzionale, consente di tener conto dell'ora legale. Vediamo quale istruzione abbiamo utilizzato per determinare il timestamp mostrato in precedenza.
// Timestamp delle ore 0:00:00 del primo gennaio 2001
echo mktime(0, 0, 0, 1, 1, 2001);


I timestamp, naturalmente, sono poco comprensibili per un essere umano, per cui vediamo subito in che modo si possano tradurre in una forma "human readable". PHP ci mette a disposizione, a questo scopo, la funzione date(). Gli argomenti di date() sono due: il primo, obbligatorio, è una stringa che rappresenta il formato in cui codificare la data; il secondo, facoltativo, è il timestamp da formattare. Se quest'ultimo viene omesso, verrà considerato il timestamp corrente. Vediamo un esempio.

// Questa istruzione stampa la data corrente nel formato gg/mm/aaaa
echo "Data di oggi " . date("d/m/Y");


Nell'esempio mostrato, la stringa che esprime il formato in cui visualizzare la data è "d/m/Y". Ognuna delle lettere che vi compaiono corrisponde ad un elemento della data; nel nostro caso al giorno del mese (01-31), al mese (01-12) ed all'anno, espresso con quattro cifre. Si consulti la pagina del manuale PHP relativa alla funzione date() per un elenco completo delle lettere utilizzabili. Nel frattempo, divertiamoci con altri esempi.

// Come sopra ma senza lo zero prima di giorni e/o mesi di una sola cifra
echo "Data di oggi " . date("j/n/Y");


L'esempio seguente stampa il numero di giorni trascorsi dall'inizio dell'anno.

echo "Sono trascorsi ".date("z")." giorni dall'inizio dell'anno.";

Riprendiamo l'esempio della data corrente; come possiamo visualizzarla in modo testuale? Ecco una possibile soluzione.

// Nomi dei giorni della settimana
$giorni = array( "Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab" );

echo "Oggi e': " . $giorni[date("w")];


In modo del tutto analogo si può ottenere il nome dei mesi. Per evitare di chiamare ripetutamente la funzione date() se ne può utilizzare un'altra, getdate(), che restituisce le informazioni sulla data ed ora correnti in un array associativo.
6 Commenti alla Notizia Corso PHP/ Lezione 10: le date
Ordina